【问题标题】:UTC time explanationUTC时间解释
【发布时间】:2013-04-30 19:30:38
【问题描述】:

谁能解释一下当我有以下时间时这意味着什么:

2012-12-28T18:12:33+01:00

我对整个日期时间的东西不熟悉,我在网上找不到很好的解释。

目前我在荷兰。是什么意思:

2012-12-28T18:12:33+01:00 = 2012-12-28 19:12:33

2012-12-28T18:12:33+01:00 = 2012-12-28 17:12:33

2012-12-28T18:12:33+01:00 = 2012-12-28 18:12:33

【问题讨论】:

    标签: time timezone utc


    【解决方案1】:

    2012-12-28T18:12:33+01:00 日期字符串表示它是 2012 年 12 月 28 日 18:12 在对应于 UTC +1 小时的时区,即 CET 时区。

    这似乎是ISO 8601 formatT 表示时间元素的开始。

    时间以本地时间表示,加上时区偏移量 小时和分钟。 “+hh:mm”的时区偏移量表示 日期/时间使用“hh”小时和“mm”分钟的本地时区 领先于 UTC。 “-hh:mm”的时区偏移量表示 日期/时间使用“hh”小时和“mm”分钟的本地时区 落后于 UTC。

    【讨论】:

    • 所以可以肯定:荷兰是 2012-12-28 18:12。我需要显示一些关于荷兰人在 2012-12-28T18:12:33+01:00 进行的交易的信息。展示的正确时间是什么时候? (对不起,我是菜鸟)
    • @iAmTheOneAndOnly - 然后将pytz 用于您的时区数据库。还有很多关于 Django 自己的时区支持的 existing questions 可能有用。
    【解决方案2】:

    您提供的2012-12-28T18:12:33+01:00 值是ISO8601 格式的DateTime+Offset 值,意思是“2013 年 12 月 12 日 18:12:33,比 UTC提前一小时

    +01:00 部分表示偏移,而不是时区。见TimeZone != Offset

    荷兰的时区是 IANA/Olson 数据库中的 Europe/Amsterdam,或者是 Windows database 中 ID 为 W. Europe Standard Time 且英文显示名称为“(UTC+01:00)阿姆斯特丹、柏林、伯尔尼、罗马、斯德哥尔摩、维也纳”。

    该区域在一年中的部分时间处于+01:00 偏移量中,并在欧洲夏令时使用+02:00 偏移量。

    仅仅因为您在 12 月拥有 +01:00,并不意味着这是全年使用的正确偏移量。它也没有告诉您时间戳在荷兰。还有几个其他时区使用相同的偏移量,而且并不总是在一年中的同一时间。

    要从一个时区转换到另一个时区,您需要首先应用您拥有的偏移量。使用你所拥有的符号的倒数。由于您有+01:00,您将减去 一个小时来获得17:12:33 的UTC 时间。然后,您需要知道一年中那个时候目标时区的正确偏移量是多少。为此,您需要a time zone database

    【讨论】:

      【解决方案3】:

      国际标准ISO 8601 指定日期和时间的数字表示。

      YYYY-MM-DDThh:mm:ss.sTZD(例如 1997-07-16T19:20:30.45+01:00) 其中:

       YYYY = four-digit year
       MM   = two-digit month (01=January, etc.)
       DD   = two-digit day of month (01 through 31)
       hh   = two digits of hour (00 through 23) (am/pm NOT allowed)
       mm   = two digits of minute (00 through 59)
       ss   = two digits of second (00 through 59)
       s    = one or more digits representing a decimal fraction of a second
       TZD  = time zone designator (Z or +hh:mm or -hh:mm)
      

      时间以 UTC(协调世界时)表示,带有一个特殊的 UTC 指示符(“Z”)。 时间以local time 表示,以及以小时和分钟为单位的时区偏移量。时区偏移量“+hh:mm”表示日期/时间使用本地时区,比 UTC 早“hh”小时和“mm”分钟。 “-hh:mm”的时区偏移表示日期/时间使用local time 区域,比UTC 晚“hh”小时和“mm”分钟。

      在您的情况下:2012-12-28T18:12:33+01:00 = 2012-12-28 18:12:33 是正确的。这意味着荷兰的时间是 18:12,比 UTC 时间早 1 小时。

      【讨论】:

      • 谢谢你的解释,最重要的是:我的问题的答案!
      • 嗯,很高兴你得到了接受的答案,但你基本上是从我那里复制了文本:)
      猜你喜欢
      • 2011-09-01
      • 2016-02-16
      • 2018-11-22
      • 2013-02-02
      • 2016-05-22
      • 2017-01-19
      • 2019-03-31
      • 1970-01-01
      相关资源
      最近更新 更多