use*_*837 4 unix timezone datetime timestamp-with-timezone
我在互联网上做了一些研究但仍然困惑.UNIX时间通用时间是否像GMT/UTC一样,或者它是否因地方时间而异地变化?
我知道UNIX时间从1970年1月1日00:00:00 GMT算起.当我在Java中使用getTime()函数时(更具体地说,日期d = new Date(); long currentTime d.getTime())我以毫秒为单位获取UNIX时间.现在如果A人和B人使用相同的功能坐在两个不同的时区,他们会得到相同的结果吗?
乔恩·斯基特的回答是正确的。我会补充一些想法。
\n\nUnix 时间对于不同的人来说意味着不同的东西。正如维基百科文章所述,基本思想通常是自纪元以来的秒数,纪元是UTC时区1970 年的第一个时刻。顾名思义,这种时间跟踪方法用于类 Unix 操作系统。
\n\n是否因地区而异?不是。根据定义,它代表 UTC 时区。因此,Unix 时间中的时刻意味着奥克兰、巴黎和Montr\xc3\xa9al的同一时刻。inUT的UTC意思是“通用时间”。
Unix 时间是否具有普遍使用的意义?不,当然不是。
\n\n第一,粒度。随着计算机时钟芯片变得更加精确,传统计算机系统开始以毫秒、微秒甚至纳秒来跟踪时间。不同的软件采用不同的时间跟踪粒度。java.util.Date/.Calendar 类和Joda-Time库都使用毫秒分辨率,而 Java 8 中内置的较新的java.time 包则采用纳秒分辨率。某些数据库(例如Postgres)通常采用微秒分辨率。
\n\n
引用问题\xe2\x80\xa6
\n\n\n\n\n我得到的 UNIX 时间以毫秒为单位
\n
从技术上讲,这是一个矛盾,因为传统的 Unix 时间或 POSIX 时间是按整秒而不是毫秒来跟踪的。
\n\n其次,时代。1970 年的第一个时刻远非各种计算机系统使用的唯一纪元。已经使用了几十个纪元,其中一些用途非常广泛。例如,Microsoft Excel 和 Lotus 1-2-3 电子表格、Cocoa、GPS卫星、Galileo卫星、DOS 和 FAT 文件系统以及 ntp(网络时间协议),每个都使用从 1899 年到 2001 年的不同纪元。
\n\n通常,最好避免通过从纪元计算毫秒(或任何粒度)来集中处理日期时间值。这些值很难被人类阅读和理解,从而使调试变得困难并且错误不明显。根据上面讨论的粒度和/或时期的假设添加可能的错误。
\n\n相反,使用一个像样的日期时间库。在 Java 中,这意味着:
\n\n\n\n您是否通过收集 7 位或 8 位组来跟踪文本?不,您使用类和库来完成处理字符集、字符编码等的繁重工作。对日期时间工作执行相同的操作。
\n现在如果A人和B人使用相同的功能坐在两个不同的时区,他们会得到相同的结果吗?
是的,他们会 - 假设他们的时钟当然都是"正确的".
该java.util.Date级基本上是围绕着包装"自Unix纪元的时间,以毫秒为单位".鉴于Unix纪元是一个瞬间的时间(不只是"午夜1970年1月1日",经过的毫秒数是一样的,无论你是.(忽略相对论和闰秒的讨论...)
(旁注:在Unix时代,格林威治不是午夜.凌晨1点,因为当时英国正在观察BST.那是英国标准时间,而不是英国夏令时 - 英国是UTC + 1 1968年2月18日至1971年10月31日.有关更多类似的琐事,请参阅Noda Time用户指南琐事页面.)
| 归档时间: |
|
| 查看次数: |
1198 次 |
| 最近记录: |