在python中等效date.utc

时间:2015-11-09 09:47:04

标签: javascript python date

我正在使用highcharts,我正在解析Django webservice中的json以将其发送给我的查看器。

我正在努力做的是在python中获得date.utc("1970,9,21")输出。

在python中模拟这个javascript函数最简单的方法是什么?

2 个答案:

答案 0 :(得分:1)

在Python中模拟Date.UTC() from javascript

#!/usr/bin/env python3
from datetime import datetime, timedelta

assert year > 100
utc_time = datetime(year, month, day, hours, minutes, seconds, ms*1000)
millis = (utc_time - datetime(1970, 1, 1)) // timedelta(milliseconds=1)

输入为UTC时间。小时,分钟,秒,ms是可选的。该方法返回自1970年1月1日00:00:00 UTC以来的(非飞跃)毫秒数。

在Python 2上模拟/ timedelta(milliseconds=1)

#!/usr/bin/env python
from __future__ import division
from datetime import datetime, timedelta

def to_millis(utc_time, epoch=datetime(1970,1,1)):
    td = utc_time - epoch
    assert td.resolution >= timedelta(microseconds=1)
    # return td.total_seconds()*1000 analog
    return (td.microseconds + (td.seconds + td.days * 86400) * 10**6) / 10**3

使用//获取整数而不是浮点数。

示例:

>>> import datetime
>>> (datetime.date(1970,9,21) - datetime.date(1970, 1, 1)).days * 86400000
22723200000

请参阅Converting datetime.date to UTC timestamp in Python

答案 1 :(得分:0)

根据你的评论@Stevanicus I want a string similar to 1107216000000 – azelix 这可能是您正在寻找的:

>>> from time import time
>>> time()
1447064407.092834
>>>

或者您可以使用calendar.timegm()来提供UTC结果,无论当地时间设置如何。

>>> import calendar
>>> import datetime
>>> d = datetime.datetime(2015, 11, 9)
>>> calendar.timegm(d.timetuple())
1447027200
>>>