时区转化和perl函数

来源:互联网 发布:php5.4 连接数据库 编辑:程序博客网 时间:2024/06/04 18:53
整个地球分为二十四时区,每个时区都有自己的本地时间。在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC,Universal Time Coordinated)。UTC与格林尼治平均时(GMT, Greenwich MeanTime)一样,都与英国伦敦的本地时相同。在本文中,UTC与GMT含义完全相同。

北京时区是东八区,领先UTC八个小时,在电子邮件信头的Date域记为+0800。如果在电子邮件的信头中有这么一行:

Date:Fri, 08 Nov 2002 09:42:22 +0800


UTC: Universal Time Coordinated 协调世界时,又称世界标准时间。
GMT: Greenwich Mean Time 格林尼治平均时。
Unix Time、Unix epoch、POSIX time、Unix timestamp。

可以认为上面所有的时间都相等,数值上都等于从1970年1月1日0时到当前的秒数。

时间与地理位置有关,为了有个统一的对话基础,将格林尼治(0时区)时间作为基准,其他时区的时间则在此基础之上进行加减。



Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。Unix时间戳不仅被使用在Unix系统、类Unix系统中,也在许多其他操作系统中被广泛采用。

1. Perl中处理时间的函数有如下几种:
        1、time函数:返回从1970年1月1日起累计的秒数
             使用:my $t=time();
        2、 localtime函数:获取本地时区时间
             使用:my $t=localtime(time());
        3、gmtime函数: 获取格林威治时间,0时区
             使用:my $t=gmtime(time());

$time = "2007-09-27 10:04:08"; &Date2Epos($time);&Epos2Data(1387456136);sub Epos2Data($){my $epostime = shift @_;my $timestr = strftime("%Y-%m-%d %H:%M:%S\n", localtime($epostime));#print "$timestr \n";return $epostime;}sub Date2Epos($){my $timestr=shift @_;#print "org: $timestr \n";my ($timelc,$sec,$min,$hour,$mday,$mon,$year);my @time = reverse(split /-|:|_|\/|\s/,$timestr);foreach(@time){s/^0//;}$timelc = join ",",@time;#print "$timelc \n";($sec,$min,$hour,$mday,$mon,$year) = split /,/,$timelc;$year -= 1900;$mon -= 1;my $epostime = timelocal($sec,$min,$hour,$mday,$mon,$year);print $epostime,"\n";$epostime;} 


0 0
原创粉丝点击