相关疑难解决方法(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万
查看次数

为什么python datetime类有'fromtimestamp'方法,但不是'totimestamp'方法?

Python的datetime类有一个从时间戳fromtimestamp创建datetime对象的方法,但是没有提供totimestamp相反的方法...我知道time.mktime(x.timetuple())你可以将datetime对象转换为时间戳,但这看起来不必要复杂对我来说,所以我很好奇为什么没有totimestamp方法?

python datetime timestamp

8
推荐指数
1
解决办法
628
查看次数

Python的`fromtimestamp`执行离散跳转

datetime.fromtimestamp用来将纪元时间转换成当地时间.我发现datetime.fromtimestamp在某个时间点发生了一小时的离散跳跃,我完全不知道为什么会这样做.

(我也正在使用time.mktime将日期时间对象转换为纪元时间,正如Raymond Hettinger所建议的那样.我不确定这是否是这个问题的相关信息,所以我说这是为了以防万一.)

Python 2.7.1+ (r271:86832, Apr 11 2011, 18:05:24) 
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import time, datetime
>>> def datetime_to_epoch_time(datetime_):
...     return time.mktime(datetime_.timetuple()) + datetime_.microsecond / 1e6
... 
Run Code Online (Sandbox Code Playgroud)

选择特定的纪元时间:

>>> x = datetime_to_epoch_time(datetime.datetime(2012, 3, 30, 3, 0))
Run Code Online (Sandbox Code Playgroud)

使用fromtimestamp以下方法将其转换为日期时间:

>>> datetime.datetime.fromtimestamp(x)
datetime.datetime(2012, 3, 30, 3, 0)
Run Code Online (Sandbox Code Playgroud)

我们得到凌晨3点的时间.

现在让我们将它之前的时间转换为正好一秒钟:

>>> datetime.datetime.fromtimestamp(x-1)
datetime.datetime(2012, 3, 30, 1, 59, 59) 
Run Code Online (Sandbox Code Playgroud)

我们突然得到凌晨1:59!

发生了什么?我知道这样的事情发生在闰日周围,但是从3月30日开始是闰日?

我应该注意到,我只在Linux上而不是在Windows上发生过这种情况.我认为不同的Linux计算机(在不同的时区)有不同的时间点,fromtimestamp跳跃.

python datetime calendar epoch

7
推荐指数
2
解决办法
2312
查看次数

标签 统计

datetime ×3

python ×3

calendar ×1

epoch ×1

timestamp ×1

utc ×1