时间,时区,time timezone gmt utc等等
地球是一个西瓜,如果西瓜上面有24个竖的条纹(经度),那么每个条纹就是一个时区。GMT(Greenwich Mean Time)格林威治时间,格林威治的经度是0度。比格林威治东边的时间要快,以西的要慢。比如中国北京的时区是+8,从中可以初略的计算出北京的经度是8x15=120度,相当于东经120度(北京的实际经度116.46 )。Coordinated Universal Time (UTC)是什么玩意?utc是以原子钟为基础的准确的时间,但它也是和GMT联系在一起,以GMT时间为主。
可以这样理解,GMT的定义是为了时区的概念,但是GMT本身也需要一种计时的基础和设备,这个大概就是UTC吧。
在linux系统中,当你安装系统的时候它会提示你选择bios的时间是UTC还是localtime。这个重要吗?
比如,你现在在北京(+8),然后飞到了纽约(-5)。如果你bios设定的是utc,那么电脑时间和bios相差+8,你飞到纽约之后,只要将系统的时区换到纽约即可。
如果你的bios设定的是本地时间,那么你必须更改时间来反映这个变化。所以从通用性来说,将bios设置成utc比较便利。 请参考百科全书:[url]http://en.wikipedia.org/wiki/Time_zone[/url]
A time zone is a region of the Earth that has adopted the same standard time, usually referred to as the local time。
一个时区就是一块地,这块地共享一个标准的时间,一般称作本地时间。local time。 [attach]834[/attach]
这是ruby对time的一些用法。可见产生的字符串是:
Fri Jul 25 01:19:19 UTC 2008
Fri Jul 25 09:19:19 +0800 2008
Fri Jul 25 09:19:19 2008
现在再来看看,javascript的Date日期的字符串形式:
d = Date.new();
d.toString(); //Fri Jul 25 2008 10:17:05 GMT+0800
d.toUTCString(); //Fri, 25 Jul 2008 02:18:06 GMT
d.toLocalString(); //2008年7月25日 10:18:32
可见字符串的表达有差异,那么通过json等格式从服务器一侧传送到浏览器一侧用javascript来处理的时候,势必需要一些转换工作。 为了简化服务器和客户端浏览器的时间的数据交换,个人觉得采用自1970年1月1日00:00以来的毫秒数比较通用。
在rubyonrails一侧可以容易的获得。
t=Time.now
t.tv_sec
t.tv_usec
所以毫秒数可以这样计算:t.tv_secx1000 + t.tv_usec/1000
而在javascript一侧,可以很容易的采用:new Date(milliseconds)来恢复日期。
Time is stored internally as the number of seconds and microseconds since the epoch, January 1, 1970 00:00 UTC 所以看一台电脑的时间设置是否正确:
1、时区
2、utc 时间
如果不清楚,也可以借助一些脚本语言的交互式界面来了解。比如ruby 和python
[[i] 本帖最后由 弯月圆刀 于 2008-11-3 17:45 编辑 [/i]]
页:
[1]
