python时间转换为秒,python毫秒转时间日期

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: