Python 如何处理/日期(1262476800000);

Python 如何处理/日期(1262476800000);,python,.net,date,datetime,Python,.net,Date,Datetime,最近我从一个API收到了这个输出(我认为它是.NET驱动的)。。这是什么类型的日期格式?如何将其转换为Python日期对象 { Id: 10900001, ExpirationDate: "/Date(1262476800000)/", } 这似乎是一个时间戳,但我在fromtimstamp() 由于API的输出似乎是JSON,因此我假设它是一个javascript时间戳。若要将其转换为python,请删除毫秒,这样就可以了 从在线转换工具 由于时间戳以毫秒为单位,因此出现错误

最近我从一个API收到了这个输出(我认为它是.NET驱动的)。。这是什么类型的日期格式?如何将其转换为Python日期对象

{
    Id: 10900001,
    ExpirationDate: "/Date(1262476800000)/",
}
这似乎是一个时间戳,但我在
fromtimstamp()


由于API的输出似乎是
JSON
,因此我假设它是一个javascript时间戳。若要将其转换为python,请删除毫秒,这样就可以了

从在线转换工具


由于时间戳以毫秒为单位,因此出现错误。您只需删除最后3个数字,它就可以工作了-

>>> from datetime import datetime, timedelta
>>> s = '1262476800540'
>>> d = datetime.fromtimestamp(float(s[:-3]))
>>> d = d + timedelta(milliseconds=int(s[-3:]))
>>> print d
2010-01-03 05:30:00.540000

它看起来像一个UNIX时间戳(以毫秒为单位)。换句话说,1262476800(000)=2010-01-03T00:00:00+00:00

这是对的吗

可以使用fromtimestamp将其转换为日期对象

干杯,
Anders

您还可以使用
时间
模块

In [13]: import time

In [14]: time.ctime(1262476800000)
Out[14]: 'Mon Apr 19 02:00:00 41976\n'

我认为您必须仔细阅读该API的文档。如果失败了,你能逆向工程吗?如果可以在该系统中创建实体,请执行此操作。如果您创建3个实体,分别于2016年1月1日、2016年1月11日和2016年1月21日到期,您将能够看到(可能)时间单位的线性增加序列,并推断出单位和基准日期。即使您不能创建实体,您是否可以通过面向人类的web界面以人类可读的格式获取日期

一旦你知道数字代表什么,你就可以把它解码成年、月、日。。。字段,或转换为自规范基准日期(时间戳)起的秒数


或者你会很幸运,另一位读者会认出这种格式

这是到期日,可能很长很长时间。40000年,可能包括毫秒。试着将时间戳除以1000,然后再进行转换。@Loolog的答案在这里非常正确!这可能会丢失毫秒部分。@罗洛将代码更新为也包含毫秒。我排除了这一点,因为我希望过期日期在未来,而不是五年前。他们可能在创建时间戳时使用了其他一些基准时间。在C#中,你可以这样做。也许他们用的不是1970年。静态DateTime ConvertFromUnixTimestamp(双时间戳){DateTime origin=new DateTime(1970,1,1,0,0,0);返回origin.AddSeconds(时间戳);}在任何情况下,从该值可以清楚地看出时间戳只包含日期而不包含时间。这可能会丢失毫秒部分,没有冒犯的意思:)您确定吗@VikasNehaOjhaOMG。。。太棒了。道歉!您还可以确定存储数据的操作系统和/或数据库是什么?系统的本机日期/时间表示形式、数据库的可用日期/时间字段格式可能会对您有所帮助。
>>> from datetime import datetime, timedelta
>>> s = '1262476800540'
>>> d = datetime.fromtimestamp(float(s[:-3]))
>>> d = d + timedelta(milliseconds=int(s[-3:]))
>>> print d
2010-01-03 05:30:00.540000
In [13]: import time

In [14]: time.ctime(1262476800000)
Out[14]: 'Mon Apr 19 02:00:00 41976\n'
>>> from datetime import datetime
>>> a = datetime.fromtimestamp(float('1262476800002')/1000)
>>> a.microsecond
2000