【问题标题】:Is UNIX time universalUNIX 时间是否通用
【发布时间】:2015-04-23 07:16:09
【问题描述】:

我在互联网上做了一些研究,但仍然感到困惑。 UNIX 时间是通用时间,像 GMT/UTC,还是像本地时间一样因地而异?

我知道 UNIX 时间是从 1970 年 1 月 1 日 00:00:00 GMT 开始计算的。当我在 Java 中使用 getTime() 函数时(更具体地说是 Date d= new Date(); long currentTime d.getTime()),我得到了以毫秒为单位的 UNIX 时间。现在如果 A 人和 B 人在两个不同的时区使用相同的函数,他们会得到相同的结果吗?

【问题讨论】:

    标签: unix datetime timezone timestamp-with-timezone


    【解决方案1】:

    现在如果 A 人和 B 人在两个不同的时区使用相同的功能,他们会得到相同的结果吗?

    是的,他们会的——当然,假设他们的时钟都是“正确的”。

    java.util.Date 类基本上是“自 Unix 纪元以来的时间,以毫秒为单位”的包装。鉴于 Unix 纪元在时间上是瞬间(不仅仅是“1970 年 1 月 1 日午夜”,无论你在哪里,经过的毫秒数都是一样的。(忽略相对论和任何关于闰秒的讨论。 ..)

    (旁注:在 Unix 时代,格林威治不是午夜。现在是凌晨 1 点,因为当时英国正在观察 BST。那是英国标准时间,而不是英国时间em>夏季时间 - 从 1968 年 2 月 18 日到 1971 年 10 月 31 日,英国是 UTC+1。有关更多类似的琐事,请参阅Noda Time user guide trivia page。)

    【讨论】:

      【解决方案2】:

      answer by Jon Skeet 是正确的。我会补充一些想法。

      Unix time 对不同的人有不同的含义。正如 Wikipedia 文章所描述的,基本概念通常是自纪元以来的秒数,epoch 是 1970 年 UTC 时区的第一刻。顾名思义,这种时间跟踪方法被用于类 Unix 操作系统中。

      地区

      是否因地区而异?不,根据定义,它代表 UTC 时区。因此,Unix 时间中的时刻意味着 AucklandParisMontréal 中的同一时刻。 UTC 中的 UT 表示“世界时”。

      从无处不在的意义上来说,Unix 时间是通用的吗?不,当然不是。

      粒度

      首先,粒度。随着计算机时钟芯片变得更加精确,传统的计算机系统以millisecondmicrosecond 甚至nanosecond 移动到跟踪时间。不同的软件采用不同的时间跟踪粒度。 java.util.Date/.Calendar 类和Joda-Time 库都使用毫秒分辨率,而Java 8 中内置的较新java.time package 采用纳秒分辨率。某些数据库(例如 Postgres)通常采用微秒级分辨率。

      引用问题……

      我以毫秒为单位获取 UNIX 时间

      在技术上是矛盾的,因为传统的 Unix 时间或 POSIX 时间是按整秒而不是毫秒来跟踪的。

      时代

      其次,epoch。 1970 年的第一刻远非各种计算机系统使用的唯一时期。一个couple dozen epochs 已经被使用过,有些用途非常广泛。例如,Microsoft Excel 和 Lotus 1-2-3 电子表格、CocoaGPS 卫星、Galileo 卫星、DOS 和 FAT 文件系统以及 ntp (Network Time Protocol),每个都使用不同的纪元,范围从几年1899 年到 2001 年。

      避免 Count-From-Epoch

      通常最好避免专注于通过从纪元开始计算毫秒(或任何粒度)来处理日期时间值。这些值很难被人类阅读和理解,从而使调试变得困难并且错误不明显。加上上面讨论的关于粒度和/或时期的假设可能出现的错误。

      改为使用一个不错的日期时间库。在 Java 中,这意味着:

      您是否通过收集 7 位或 8 位组来跟踪文本?不,您使用类和库来完成处理字符集、字符编码等的繁重工作。对日期时间工作执行相同的操作。

      【讨论】:

        猜你喜欢
        • 2011-02-20
        • 2011-09-15
        • 1970-01-01
        • 2019-03-06
        • 2011-02-01
        • 2021-06-12
        • 1970-01-01
        • 2017-11-29
        • 1970-01-01
        相关资源
        最近更新 更多