北京时区是东八区,领先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;
}