Python的time.time()函数返回的是本地时间还是UTC时间戳?

34 浏览
0 Comments

Python的time.time()函数返回的是本地时间还是UTC时间戳?

Python time模块中的time.time()返回的是系统时间还是UTC时间?

0
0 Comments

Python的time.time()函数返回的是本地时间还是UTC时间戳?

在这段代码中,根据#squiguy的答案,为了获取真正的时间戳,需要将其从浮点数转换为整数。

>>> import time
>>> ts = int(time.time())
>>> print(ts)
1389177318

至少这是概念上的理解。

为什么需要对时间戳进行类型转换?默认的类型是什么?

type(time.time())的结果是<type 'float'>

但是,如果需要更精确的时间,浮点数是有意义的。

Python是强类型的。不要将其与静态类型混淆。

int()是多态的。在旧版本的Python上,如果需要,它将返回long - 在新版本的Python上,所有整数都是长整型。

问题的原因是在于获取时间戳时,time.time()函数返回的是一个浮点数。为了获得整数类型的时间戳,需要将其进行类型转换。默认情况下,时间戳的类型是浮点数。如果需要更精确的时间,可以使用浮点数类型的时间戳。

解决方法是使用int()函数对时间戳进行类型转换,将其转换为整数类型的时间戳。这样可以得到更精确的时间。在旧版本的Python中,int()函数会返回长整型,而在新版本的Python中,所有整数都是长整型。

0
0 Comments

Python的time.time()返回的是本地时间还是UTC时间戳?

这个问题出现的原因是,有人想要获取时间戳而不是日期格式,所以提到了time.time()这个函数。然而,time.time()函数返回的是自1970年1月1日以来的秒数,而不是日期格式。

解决方法是使用datetime模块的datetime.datetime.utcnow()函数来获取UTC时间戳,或者使用datetime.datetime.now()函数来获取本地时间戳。另外,可以使用strftime()函数来将时间戳格式化成自定义的字符串格式。

以下是示例代码:

import datetime
# 获取UTC时间戳
print(datetime.datetime.utcnow())
# 获取本地时间戳
print(datetime.datetime.now())
# 将时间戳转换为字符串
print(str(datetime.datetime.now()))
# 将时间戳格式化为自定义字符串格式
print(datetime.datetime.now().strftime("%A, %d. %B %Y %I:%M%p"))
# 获取ISO格式的时间戳
print(datetime.datetime.now().isoformat())
# 在变量中进行计算和打印
ts = datetime.datetime.now()
tf = datetime.datetime.now()
te = tf - ts
print(ts)
print(tf)
print(te)

此外,如果要将时间戳作为字符串的一部分打印出来,可以使用以下代码:

Python 2:

import datetime
print "%s: My timestamp message" % datetime.datetime.utcnow()

Python 3:

import datetime
print ("%s: My timestamp message" % datetime.datetime.utcnow())

需要注意的是,datetime.datetime.utcnow()返回的是一个不带时区信息的时间戳,如果本地时间不是UTC时间,那么返回的时间戳是不准确的。可以使用datetime.datetime.now(datetime.timezone.utc)来获取一个带有时区信息的时间戳,以表示当前时间。

0
0 Comments

Python的time.time()函数返回自纪元以来的秒数,以浮点数形式表示。请注意,"纪元"的定义是UTC时间下的1970年1月1日的开始。因此,纪元是以UTC为基准定义的,并确定了一个全球性的时间点。无论你在地球上的哪个地方,"距离纪元的秒数"(time.time())在同一时刻返回相同的值。

下面是我在我的计算机上运行的一些示例输出,同时将其转换为字符串。

>>> import time
>>> ts = time.time()
>>> ts
1355563265.81
>>> import datetime
>>> datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S')
'2012-12-15 01:21:05'
>>>

变量ts是以秒为单位返回的时间。然后我使用datetime库将其转换为可读的字符串。

为什么我们在datetime中已经可以获得时间戳的情况下还要导入time呢?只需去除毫秒部分即可 - `str(datetime.datetime.now()).split('.')[0]`

Unix纪元在这里有明确的定义。该页面中还有一个Python示例。我不明白你的评论。

说实话,我不记得我为什么会这么说了。我一定是误读了某些内容,并且在我在法国和美国之间移动时,我一直在努力找到为什么某些测试会失败,最后发现问题是由于夏令时导致今年这个时期的一周变长。对此我感到抱歉,并感谢你指出这一点。

它不是"UTC时间的秒数"。time.time()返回的时间戳不属于任何时区。"距离纪元的秒数"是一个术语;它不是从某个时间点(纪元)开始经过的秒数。你可以很容易地将其转换为你的本地时间(使用时区数据库)和/或UTC时区。顺便说一句,如果去掉`.strftime()`,结果几乎是相同的(微秒级别的误差)。

刚刚测试了一下,time.time()并不返回UTC时间,而是返回我的本地时区时间。

0