获得明天约会的最干净,最恐怖的方式是什么?必须有一个更好的方法,而不是在一天中添加一个,在月末处理天数等.
我现在能想到的最好的就是这种怪异:
>>> datetime.utcnow() \
... .replace(tzinfo=pytz.UTC) \
... .astimezone(pytz.timezone("Australia/Melbourne")) \
... .replace(hour=0,minute=0,second=0,microsecond=0) \
... .astimezone(pytz.UTC) \
... .replace(tzinfo=None)
datetime.datetime(2008, 12, 16, 13, 0)
Run Code Online (Sandbox Code Playgroud)
即,用英语,获取当前时间(以UTC为单位),将其转换为其他时区,将时间设置为午夜,然后转换回UTC.
我不只是使用now()或localtime(),因为它会使用服务器的时区,而不是用户的时区.
我不禁感到我错过了什么,有什么想法吗?
我将所有时间都存储在UTC中,我的系统设置为UTC(虽然我在EST).
我将日期存储为:
Wed, 20 Feb 2013 03:51:39 +0000
Run Code Online (Sandbox Code Playgroud)
但是,我想今天选择基于EST的信息,所以我试图:
获取UTC当前时间并更改为EST
datetime.utcnow().replace(tzinfo=tz.tzutc()).astimezone(tz.gettz('America/New_York'))
2013-02-19 23:17:20.560898-05:00
Run Code Online (Sandbox Code Playgroud)接下来我想知道EST日(2013-02-19 00:00:00.000000-05:00)和结束时间(2013-02-19 23:59:59.99999-05:00)的开始时间
一旦我有了这些值,我想转换回UTC,所以我有一个高和低的值,我可以通过这是正确的我的EST(我的时区).
如果这不是最好的方法,或者我错过了一些东西(对我来说似乎过于复杂)请帮助我看看光!
TIA
每个答案更新:
d1 = datetime.utcnow().replace(tzinfo=tz.tzutc()).astimezone(tz.gettz('America/New_York'))
print d1.strftime("%m %d %Y") ; d2 = d1.replace(day=d1.day + 1) ; print d2.strftime("%m %d %Y")
Run Code Online (Sandbox Code Playgroud)
这会给我
02 20 2013
02 21 2013
Run Code Online (Sandbox Code Playgroud)
哪个是对的.我现在需要从中生成完整的EST时间,然后转换为UTC.这我无法弄明白.实际上,我可能希望在完成时转换为UTC纪元时间戳,因为这将使我的数据库操作非常简单(<,>,==等).
在下面的代码中,我正在计算现在的纪元和当天纪元的开始.
import time
import pytz
from datetime import datetime
tz1 = pytz.timezone('CST6CDT')
utc = pytz.timezone('UTC')
now = pytz.UTC.localize(datetime.utcnow())
now_tz = now.astimezone(tz1)
print now_tz
print now_tz.strftime('%s')
begin_day = now_tz.replace(hour=0, minute=0, second=0)
print begin_day
print begin_day.strftime('%s')
Run Code Online (Sandbox Code Playgroud)
打印声明:
2012-08-28 13:52:21.595718-05:00
1346187141
2012-08-28 00:00:00.595718-05:00
1346137200
Run Code Online (Sandbox Code Playgroud)
使用CDT时区将时期转换为时间戳:1346187141 - 2012年8月28日15:52:21,1346137200 - 2012年8月28日02:00:00
我希望第二个时代开始,但现在是凌晨2点.在转换为纪元时,它看起来仍然使用本地时区PST.
我究竟做错了什么 ?或者这可以用不同的方式完成吗?
谢谢!
根据当前时间 ( datetime.now()
),我想将其扩展到涵盖一整天的时间。
现在我一直在使用:
start = (datetime.now() - timedelta(days=1)).strftime('%Y-%m-%d %H:%M:%S')
end = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
Run Code Online (Sandbox Code Playgroud)
问题是这是从当前日期算起的 24 小时。如果是中午 12 点,这意味着它应该只回顾 12 小时,因为我想搜索当天的记录。
如何在 Python 中完成此操作?