时区转化和perl函数
整个地球分为二十四时区,每个时区都有自己的本地时间。在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(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 协调世界时,又称世界标准时间。 可以认为上面所有的时间都相等,数值上都等于从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中处理时间的函数有如下几种: $time = "2007-09-27 10:04:08"; &Date2Epos($time); &Epos2Data(1387456136); sub Epos2Data($){ my $epostime = shift @_; my $timestr = strftime("%Y-%m-%d %H:%M:%Sn",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,$year) = split /,/,$timelc; $year -= 1900; $mon -= 1; my $epostime = timelocal($sec,$year); print $epostime,"n"; $epostime; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |