相关疑难解决方法(0)

在Python中将datetime.date转换为UTC时间戳

我正在处理Python中的日期,我需要将它们转换为UTC时间戳,以便在Javascript中使用.以下代码不起作用:

>>> d = datetime.date(2011,01,01)
>>> datetime.datetime.utcfromtimestamp(time.mktime(d.timetuple()))
datetime.datetime(2010, 12, 31, 23, 0)
Run Code Online (Sandbox Code Playgroud)

将日期对象首先转换为datetime也无济于事.我试过这个链接的例子,但是:

from pytz import utc, timezone
from datetime import datetime
from time import mktime
input_date = datetime(year=2011, month=1, day=15)
Run Code Online (Sandbox Code Playgroud)

现在要么:

mktime(utc.localize(input_date).utctimetuple())
Run Code Online (Sandbox Code Playgroud)

要么

mktime(timezone('US/Eastern').localize(input_date).utctimetuple())
Run Code Online (Sandbox Code Playgroud)

确实有效.

所以一般的问题:如何根据UTC获得自纪元以来转换为秒的日期?

python datetime utc

281
推荐指数
6
解决办法
51万
查看次数

使用pytz的Datetime时区转换

这只是另一篇文章pytz.

有两个函数可以在两个时区之间转换日期时间对象.第二个功能适用于所有情况.第一个函数在两种情况下失败,(3)和(4).类似的SO帖子没有这样的问题.任何解释基础上的区别localize(datetime.datetime)replace(tzinfo)将是一个很大的帮助.

>>> from dateutil.parser import parse
>>> import pytz
Run Code Online (Sandbox Code Playgroud)

第一个功能(越野车)

以下功能使用datetime.datetime.replace(tzinfo).

def buggy_timezone_converter(input_dt, current_tz='UTC', target_tz='US/Eastern'):
    '''input_dt is a datetime.datetime object'''
    current_tz = pytz.timezone(current_tz)
    target_tz = pytz.timezone(target_tz)
    target_dt = input_dt.replace(tzinfo=current_tz).astimezone(target_tz)
    return target_tz.normalize(target_dt)
Run Code Online (Sandbox Code Playgroud)

现在注意四个日期时间转换.

(1)从UTC到EST - 好的

>>> buggy_timezone_converter(parse('2013-02-26T04:00:00'))
Out[608]: datetime.datetime(2013, 2, 25, 23, 0, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>)
Run Code Online (Sandbox Code Playgroud)

(2)从UTC到EDT - 好的

>>> buggy_timezone_converter(parse('2013-05-26T04:00:00'))
Out[609]: datetime.datetime(2013, 5, 26, 0, 0, tzinfo=<DstTzInfo 'US/Eastern' EDT-1 day, 20:00:00 DST>)
Run Code Online (Sandbox Code Playgroud)

(3)从EST到UTC - 不行.时间偏移是4小时56分钟.它应该是5个小时 …

python timezone datetime pytz python-2.7

11
推荐指数
1
解决办法
4390
查看次数

与 utcfromtimestamp 相反的函数?

的相反函数是什么utcfromtimestamp()

timestamp()显然没有考虑时区,如以下示例所示:

import pandas as pd
import datetime
start = pd.datetime(2000, 1, 1, 0, 0, 0)
asFloat = start.timestamp()
startDifferent = datetime.datetime.utcfromtimestamp(asFloat)
startDifferent
Out[8]: datetime.datetime(1999, 12, 31, 23, 0)
Run Code Online (Sandbox Code Playgroud)

python datetime

6
推荐指数
1
解决办法
1061
查看次数

如何在转换为Unix时指定时区(UTC)?(蟒蛇)

我有一个IS8601格式的utc时间戳,我试图将其转换为unix时间.这是我的控制台会话:

In [9]: mydate
Out[9]: '2009-07-17T01:21:00.000Z'
In [10]: parseddate = iso8601.parse_date(mydate)

In [14]: ti = time.mktime(parseddate.timetuple())

In [25]: datetime.datetime.utcfromtimestamp(ti)
Out[25]: datetime.datetime(2009, 7, 17, 7, 21)
In [26]: datetime.datetime.fromtimestamp(ti)
Out[26]: datetime.datetime(2009, 7, 17, 2, 21)

In [27]: ti
Out[27]: 1247815260.0
In [28]: parseddate
Out[28]: datetime.datetime(2009, 7, 17, 1, 21, tzinfo=<iso8601.iso8601.Utc object at 0x01D74C70>)
Run Code Online (Sandbox Code Playgroud)

如你所见,我无法回到正确的时间.如果我使用fromtimestamp(),则小时为1,如果我使用utcfromtimestamp(),则提前6小时

有什么建议?

谢谢!

python datetime iso8601 unix-timestamp

5
推荐指数
1
解决办法
8542
查看次数

标签 统计

datetime ×4

python ×4

iso8601 ×1

python-2.7 ×1

pytz ×1

timezone ×1

unix-timestamp ×1

utc ×1