在Python中以YYYY-MM-DD格式获取今天和明天的PST时间日期
我需要在Python中获取今天和明天的日期,格式是YYYY-MM-DD,并且要使用太平洋标准时间(PST)。但是,datetime()这个函数返回的是协调世界时(UTC)的日期。我有一个内部的JIRA系统,它使用的是PST的日期设置,我想要查询这个系统。我的代码会在一个受限的环境中运行,不能安装任何外部的Python模块,比如pytz库。我尝试了很多方法,但都没有成功。
有没有办法在Python中做到这一点呢?
3 个回答
1
我用下面的代码来获取今天和明天的日期,时间是太平洋标准时间(PST)。
from datetime import datetime, timedelta
from pytz import timezone
import pytz
/*Timezone aware object*/
utc_now = pytz.utc.localize(datetime.utcnow())
pst_now = utc_now.astimezone(pytz.timezone("America/Los_Angeles"))
file_dt=pst_now.strftime("%Y-%m-%d")
print(file_dt)
curr_time=datetime.utcnow().astimezone(pytz.timezone("America/Los_Angeles")
tom_time=utc_now+datetime.timedelta(days=1)
today=curr_time.strftime("%Y-%m-%d")
tomorrow=tom_time.strftime("%Y-%m-%d")
print("Today is "+today+" and Tomorrow is "+tomorrow)
2
看起来你可以用timedelta来把UTC时间转换成太平洋标准时间(PST),还可以把今天的日期变成明天的日期:
from datetime import datetime, timedelta
print datetime.utcnow() - timedelta(hours=8) //convert to PST
print datetime.utcnow() + timedelta(days=1) //get tomorrow
如果你想要‘YYYY-MM-DD’这种格式,可以使用date.isoformat()这个方法,具体可以参考Python文档
3
关于datetime.date.today()的时区问题让人有些困惑,http://docs.python.org/2/library/datetime.html 这个函数返回的是本地时间。现在在格林威治(Greenwich)是3月20日:
凌晨1:55
2014年3月20日,星期四(格林威治标准时间)
在英国伦敦的时间
而在科罗拉多州,today()返回的是19号:
>>> import datetime
>>> str(datetime.date.today())
'2014-03-19'
>>> str(datetime.date.today() + datetime.timedelta(1))
'2014-03-20'
>>>