当前位置: 首页 > 知识库问答 >
问题:

做Python的时间。time()返回UTC格式的时间戳?[副本]

朱翔
2023-03-14

我需要在UTC时间生成一个UNIX时间戳,所以我使用time.time()来生成它。
我是否需要执行其他操作,或者时间戳是否自动采用 UTC?

共有2个答案

怀德馨
2023-03-14

time.time() 返回自纪元以来的秒数,因此它不定义正在使用哪个时间标准或区域。

使用以下方法转换为时间标准:

  • time.localtime([秒])-由操作系统定义的本地时间
  • time.gmtime([秒])-UTC

它们都返回time.struct_time

>>> t = time.time()
>>> time.localtime(t)
time.struct_time(tm_year=2013, tm_mon=5, tm_mday=15, tm_hour=2, tm_min=41, tm_sec=49, tm_wday=2, tm_yday=135, tm_isdst=1)
>>> time.gmtime(t)
time.struct_time(tm_year=2013, tm_mon=5, tm_mday=15, tm_hour=0, tm_min=41, tm_sec=49, tm_wday=2, tm_yday=135, tm_isdst=0)
公宜春
2023-03-14

从技术上讲,time.time() 没有指定,实际上,至少在 CPython 中,它以底层标准 C 库的时间函数使用的任何格式返回时间戳。

C标准(不是免费提供的)没有说明这是否是GMT,POSIX标准也没有。它只是说:

time() 函数应返回自纪元以来的时间值(以秒为单位)。

…没有说明时区,除了您可以将其传递给localtimegmtime以获取本地或GMT时区中的“故障时间”。

所以,这是特定于平台的。平台可以为time返回它想要的任何东西,只要它这样做的方式使localtimegmtime正常工作。

也就是说,除了闰秒(大多数其他平台)之外,通常是GMT,或者UTC(Windows)或UTC。例如,FreeBSD表示:

< code>time()函数返回协调世界时1970年1月1日0小时0分0秒后的时间值,不包括闰秒。

OS X和大多数其他BSD具有相同的手册页,Windows和linux / glibc也专门返回UTC(带或不带闰秒)等。

此外,Python留档说:

要找出纪元是什么,请查看 gmtime(0)。

将其与时间和gmtime的定义放在一起,平台返回本地时间戳比GMT要多得多。(话虽如此,这种说法不可能那么权威,因为对于任何POSIX平台来说,这实际上都不是完全正确的,这要归功于闰秒。

 类似资料:
  • 我知道有人问过这个问题,但没有提供解决方案。Python UTC日期时间对象的ISO格式不包括Z(Zulu或零偏移) 我正在寻找一种在Python中用这种格式生成UTC时间戳的干净方法。我需要的格式是。 具体来说,我需要在最后加上“Z”。Python的不会在末尾附加Z。 请注意,手动添加“Z”不是我可以接受的解决方案。我正在寻找一个干净的方法来做到这一点。 以ISO格式生成带后缀的UTC时间戳的干

  • 问题内容: 我只想检查是否返回UTC / GMT时间戳,还是需要使用? 问题答案: 返回UNIX时间戳,该时间戳与时区无关。由于UNIX时间戳表示自1970年 UTC 以来的秒数,您可以说它是UTC,但实际上没有时区。 实际上,UNIX时间戳在任何给定时间在全世界范围内都是相同的值。在撰写本文时,它在东京,伦敦和纽约。要将其转换为“人类可读”的时间,您需要指定要显示的时区。在东京是,在伦敦是在纽约

  • Python时间模块中的是否返回系统的时间或UTC时间?

  • 我正在尝试使用Joda在一个简单的Java程序中获取UTC时间戳: 程序输出如下: 毫秒值是正确的UTC时间(即用时区确认)第二个值是时区。 我需要的是UTC值不变为(即独立于TZ),用于数据库写入。这可能吗? 我知道是本地日期(GMT-4),是UTC(GMT-0)。日期的输出值如下: 我尝试了所有组合,试图将的UTC值作为java.sql.TimeStamp: 用于测试的打印输出: 第一行是正确

  • 格式化时间 timeFormat | date(timestamp, format = "yyyy-mm-dd") 注意:1.7.9之前的版本只能传入秒或毫秒时间戳,date和timeFormat为同功能不同名函数,无论用哪个方法名,都是一样的。 该函数必须传入第一个参数,第二个参数是可选的,函数返回一个格式化好的时间。 time <String> 任何合法的时间格式、秒或毫秒的时间戳 forma

  • 问题内容: 我想以毫秒为单位获取当前UTC时间。我搜索了google,并得到了一些System.currentTimeMillis()确实返回UTC时间的答案。但事实并非如此。如果我执行以下操作: 这三个时间几乎都相同(由于通话,相差以毫秒为单位)。 这不是UTC时间,而是我的时区时间。如何在Android中获取当前UTC时间? 问题答案: 您显示的所有三行都将给出自unix纪元以来的毫秒数,这是