Python提供不同的套餐(datetime,time,calendar),可以看出这里为了应对时间.通过使用以下内容来获取当前的GMT时间,我犯了一个大错误time.mktime(datetime.datetime.utcnow().timetuple())
在Unix时间戳中获取当前GMT时间的简单方法是什么?
有没有办法通过指定日期来获取UTC时间戳?我期待的是:
datetime(2008, 1, 1, 0, 0, 0, 0)
Run Code Online (Sandbox Code Playgroud)
应该导致
1199145600
Run Code Online (Sandbox Code Playgroud)
创建天真的日期时间对象意味着没有时区信息.如果我查看datetime.utcfromtimestamp的文档,则创建UTC时间戳意味着省略时区信息.所以我猜,创建一个天真的日期时间对象(就像我做的那样)会产生一个UTC时间戳.然而:
then = datetime(2008, 1, 1, 0, 0, 0, 0)
datetime.utcfromtimestamp(float(then.strftime('%s')))
Run Code Online (Sandbox Code Playgroud)
结果是
2007-12-31 23:00:00
Run Code Online (Sandbox Code Playgroud)
datetime对象中是否还有隐藏的时区信息?我究竟做错了什么?
我们可以使用time.tzname获取本地时区名称,但该名称与之不兼容pytz.timezone.
实际上,返回的名称time.tzname含糊不清.此方法('CST', 'CST')在我的系统中返回,但"CST"可以指示四个时区:
在Python中,如何将a datetime.datetime转换为float我从time.time函数中获得的那种?
我有一个python datetime对象,我想转换为UTC.我计划以RFC 2822格式输出它以放入HTTP标头,但我不确定这对于这个问题是否重要.我在这个网站上找到了一些关于转换时间对象的信息,它看起来更简单,但这次我真的想使用datetime对象,因为我使用timedeltas来调整它们:
我试过这样的事情:
from datetime import datetime, timedelta
now = datetime.now()
fiveMinutesLater = datetime.now() + timedelta(minutes=5)
fiveMinutesLaterUtc = ???
Run Code Online (Sandbox Code Playgroud)
时间或日期时间模块中的任何内容看起来都不会对我有所帮助.看起来我可以通过将datetime对象传递给3或4个函数来实现它,但我想知道是否有更简单的方法.
我宁愿不使用第三方模块,但我可能会认为它是唯一合理的选择.
我想计算从现在到明天12:00之间的秒数.所以我需要明天12:00 datetime对象.
这是伪代码:
today_time = datetime.datetime.now()
tomorrow = today_time + datetime.timedelta(days = 1)
tomorrow.hour = 12
result = (tomorrow-today_time).total_seconds()
Run Code Online (Sandbox Code Playgroud)
但它会引发这个错误:
AttributeError: attribute 'hour' of 'datetime.datetime' objects is not writable
Run Code Online (Sandbox Code Playgroud)
如何修改小时或如何获得明天的12:00 datetime对象?
我正在使用一个代码,它给我utc时间戳,我想将它们转换为适当的日期时间.不幸的是,当我用pytz测试简单的情况时,日期时间增加了6个小时(CST偏移到UTC).我需要保持时区数据的正确性,因为我正在计算其他时区之间的差异.任何想法为什么以及如何将utc时间戳转换为utc日期时间?
In [1]: import pytz
In [2]: from datetime import datetime
In [3]: import time
In [4]: datetime.fromtimestamp(time.mktime(datetime(7,1,1, tzinfo=pytz.UTC).timetuple()), tz=pytz.UTC)
Out[4]: datetime.datetime(2007, 1, 1, 6, 0, tzinfo=<UTC>)
In [5]: datetime.fromtimestamp(time.mktime(datetime(7,1,1).utctimetuple()), tz=pytz.UTC)
Out[5]: datetime.datetime(2007, 1, 1, 6, 0, tzinfo=<UTC>)
In [6]: datetime.fromtimestamp(time.mktime(datetime(7,1,1).utctimetuple()))
Out[6]: datetime.datetime(2007, 1, 1, 0, 0)
Run Code Online (Sandbox Code Playgroud) 我正在尝试做一些非常简单的事情,将datetime对象将来三天转换为Unix UTC时间戳:
import datetime, time
then = datetime.datetime.now() + datetime.timedelta(days=3)
# Method 1
print then.strftime("%s")
# Method 2
print time.mktime(then.timetuple())
# Method 3
print time.mktime(then.timetuple()) * 1000
Run Code Online (Sandbox Code Playgroud)
方法1和2给我的Unix时间,秒,毫秒不和方法3给我毫秒,没有实际精确到毫秒.
当我简单地打印时then,我得到了datetime.datetime(2011, 11, 19, 15, 16, 8, 278271),所以我知道精度可用几毫秒.如何获得具有实际毫秒精度的Unix时间戳?如果它作为一个浮动返回,我必须将它变平为一个int,这没关系.有没有我正在寻找的解决方案呢?
根据http://dev.mysql.com/doc/refman/5.0/en/datetime.html.我必须找到一种方法将字符串值'YYYY-MM-DD HH:MM:SS'转换为时间戳int.
我抬头看了python的doc.
我试过了:
print(time.strptime('2013-01-12 15:27:43', '%Y-%m-%d %H:%M:%S'))
Run Code Online (Sandbox Code Playgroud)
python给我一个像这样的结果.
time.struct_time(tm_year = 2013,tm_mon = 1,tm_mday = 12,tm_hour = 15,tm_min = 27,tm_sec = 43,tm_wday = 5,tm_yday = 12,tm_isdst = -1)
我试过这个将时间戳转换为YYYY-MM-DD HH:MM:SS格式
print(time.strftime('%Y-%m-%d %H:%M:%S',time.time()))
Run Code Online (Sandbox Code Playgroud)
python给我一个类型错误.
我只使用时间戳来计算时间和日期,我希望在python中已有一种方法,简单高效,而且不必创建临时数据.
根据答案,我写了两种方法.希望它会有所帮助
import time
def convertTimestampToSQLDateTime(value):
return time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(value))
def convertSQLDateTimeToTimestamp(value):
return time.mktime(time.strptime(value, '%Y-%m-%d %H:%M:%S'))
Run Code Online (Sandbox Code Playgroud)