python时间转换为秒,python毫秒转时间日期
所以我有两个函数可以把python datetime.datetime()对象转换成毫秒和毫秒。我不知道哪里出了问题。以下是我的工作内容:
导入日期时间
定义截止日期:
报告REST服务中项目日期以毫秒为单位,
该函数将毫秒转换为日期时间对象
必需的:
mil -以毫秒为单位的时间
如果mil==None:
不返回
elif mil 0:
return datetime . datetime . utcfromtimestamp(0)datetime . time delta(秒=(mil/1000))
否则:
返回datetime . datetime . from timestamp(mil/1000)
定义日期至百万年(日期):
将datetime.datetime()对象转换为毫秒
日期-日期时间.日期时间()对象
if isinstance(date,datetime.datetime):
epoch=datetime . datetime . utcfromtimestamp(0)
返回long((日期-纪元))。total_seconds() * 1000.0)
mil=1394462888000
日期=截至日期(百万分之一)
日期
datetime.datetime(2014,3,10,9,48,8)#这是正确的
d2m=日期到百万分之一(日期)
d2m
1394444888000L
密耳
1394462888000L
date2=mil_to_date(d2m)
日期2
datetime.datetime(2014,3,10,4,48,8)#为什么我损失了5个小时?
我因为某些原因损失了五个小时。我忽略了什么明显的东西吗?还是我的一个或者两个功能都有问题?
这是因为fromtimestamp返回本地时间:‘如果可选参数tz为none或未指定,时间戳将转换为平台的本地日期和时间,返回的日期时间对象为naive。’
不相关:时间增量(百万=百万)有效。
相关:用python获取当前时间毫秒?
无关:即使结果很长也可以用int(2**300)。
1394462888000 !=1394444888000
原因是date_to_mil与UTC兼容,而mil_to_date不兼容。您应该使用fromtimestamp而不是utcfromtimestamp。
进一步解释:
在您的代码中,epoch是UTC中的纪元日期(但是对象没有任何时区)。但是date是本地的,因为fromtimestamp返回一个本地时间:
如果可选参数tz为None或未指定,则时间戳为
转换为平台的本地日期和时间,返回的
datetime对象是幼稚的
因此,从本地日期时间中减去UTC时间得到一个延迟,即UTC的本地延迟。
哦,哇,我错过了一些明显的东西!我应该把两个都当成UTC。我没有注意到我没有使用。王朝之后所有日期的else语句的utcfromtimestamp()方法。谢谢你
@crmackey:需要强调的是,从本地日期时间中减去UTC时间就像从千克中减去英镑——一样。结果没有意义(UTC时间要从UTC时间中减去)。如果本地时区在过去具有不同的UTC偏移量,则对表示具有不同UTC偏移量的本地时间的原始日期时间对象执行运算也是错误的。检查日期和时间之间是否已经过了24小时)
如果输入是UTC,则获取整数毫秒形式的POSIX时间戳:
从日期时间导入日期时间,时间增量
def timestamp_millis(utc_time,epoch=datetime(1970,1,1)):
以整数形式返回纪元后毫秒数
td=utc时间纪元
return (td .微秒(td .秒td .天* 86400) * 10**6) //10**3
注意:该公式可能会产生与:int(td.total_seconds() * 1000)不同的结果。
相反,要从POSIX时间获得UTC时间,以毫秒为单位:
def datetime_from_millis(millis,epoch=datetime(1970,1,1)):
返回自纪元以来对应于毫秒UTC时间
返回纪元时间增量(毫秒=毫秒)
支持正负毫。
注意:在这些函数之外不进行任何处理。
示例:
日期时间从毫秒(1394462888000)
日期时间.日期时间(2014,3,10,14,48,8)
datetime . utcfromtimestamp(1394462888)
日期时间.日期时间(2014,3,10,14,48,8)
时间戳_毫秒(_)
1394462888000
结果和你问题里的结果不一样!
Gmtime(0)。年份被忽略!=1970年和TZ=右/UTC案例。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。