时区转化和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 协调世界时,又称世界标准时间。
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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值