1634515205001转换为日期和计时器为:星期一202100:00:05
我试图使用以下方法将1634515205001转换为日期和时间:
导入日期
dt1 = datetime.datetime.strptime(
str(datetime.datetime.fromtimestamp(1634515205001 / 1000)),
"%Y-%m-%d %H:%M:%S.%f").strftime(
'%Y-%m-%dT%H:%M:%SZ')
print('dt1' , dt1)其中的指纹:
dt1 2021-10-18T01:00:05Z为什么需要除以1000 (1634515205001 / 1000)?使用:
dt1 = datetime.datetime.strptime(
str(datetime.datetime.fromtimestamp(1634515205001)),
"%Y-%m-%d %H:%M:%S.%f").strftime(
'%Y-%m-%dT%H:%M:%SZ')
print('dt1', dt1)呈现:
str(datetime.datetime.fromtimestamp(1634515205001)),
OSError: [Errno 22] Invalid argumentfromtimestamp不接受毫秒作为参数吗?
发布于 2022-04-07 21:08:53
datetime.fromtimestamp()函数以秒(而不是毫秒)为单位转换时间,因此需要以毫秒为单位转换为秒(除以1000)。
此调用试图计算自1970年1月1日至1970年(即53765 )以来的1634515205001秒,并引发异常。
dt = datetime.fromtimestamp(1634515205001)可以通过调用time.time()获取当前时间的时间(以秒为单位),从而获得当前时间的预期数字数。
print(time.time())输出:
1649365827.417279 <= 10 digits before the decimal place时区
函数zone时间戳()知道时区,因此如果不提供时区参数,则日期时间被转换为本地时区。如果未指定时区,且时间戳时区与本地时区不同,则转换日期时间将被错误计算。在当地时区下方是UTC-4.
dt = datetime.fromtimestamp(1634515205.001, tz=timezone.utc)
print(dt) # => 2021-10-18 00:00:05.001000+00:00
dt = datetime.fromtimestamp(1634515205.001)
print(dt) # => 2021-10-17 20:00:05.001000警告:由于天真的
datetime对象被许多datetime方法当作本地时间处理,所以最好使用感知的日期时间来表示UTC中的时间。因此,在UTC中创建表示特定时间戳的对象的推荐方法是调用datetime.fromtimestamp(timestamp, tz=timezone.utc)。
发布于 2022-04-07 21:07:31
要回答您的问题,是,在计算日期时需要秒而不是毫秒。
发布于 2022-04-07 21:11:20
在文献资料中,datetime.datetime.fromtimestamp函数定义说:
返回与POSIX时间戳对应的本地日期,如time.time()返回的日期。
POSIX timestamp是自1970年1月1日(UTC)以来已经过去的秒数。
所以是的,fromtimestamp不接受毫秒,因为POSIX时间戳被定义为秒
如果您正在处理毫秒,您还可以选择使用以下内容:
datetime = datetime(1970, 1, 1) + timedelta(milliseconds=1634515205001)https://stackoverflow.com/questions/71788874
复制相似问题