我得到了服务器日期,我需要从GMT获得这个日期的差异
我得到了
Datetime = "2011-04-27 2:17:45"
我想得到像
这样的结果Datetime = "2011-04-27 2:17:45 +0500"
答案 0 :(得分:2)
试试这个:
import datetime, pytz
now = datetime.datetime.now(pytz.timezone('Asia/Kolkata'))
print now.strftime('%Y-%m-%d %H:%M:%S %z')
# prints: '2011-04-27 13:56:09 +0530'
答案 1 :(得分:0)
从你给出的例子来看,我认为你所寻找的是datetime.isoformat。页面中的示例显示了如何使用时区信息将日期时间值转换为ISO格式。
答案 2 :(得分:0)
为此,您必须知道服务器日期的时区(或UTC偏移量)。你在这里有一个“天真”的日期,没有时区信息,你无法猜测UTC差异。
答案 3 :(得分:0)
我认为datetime
模块就是您所需要的:
>>> from datetime import datetime
>>> datetime.now()
datetime.datetime(2011, 4, 27, 11, 8, 26, 149000)
>>> datetime.utcnow()
datetime.datetime(2011, 4, 27, 8, 8, 47, 712000)
两个日期之间的差异:
>>> dtnow = datetime.now()
>>> dtutc = datetime.utcnow()
>>> dtnow - dtutc
datetime.timedelta(0, 10792, 847000)
在Python的文档中查找datetime
模块和相关的类。
答案 4 :(得分:0)
日期时间标准python库的一个非常强大的扩展是dateutil,它可以让你轻松:
default
选项,这将允许我们设置我们的时区)所以第一个设定的时区,以及该区域的默认日期:
>>> from datetime import datetime
>>> from dateutil import parser
>>> from dateutil.tz import tzoffset
>>> tz_plus_5 = tzoffset(None, 5 * 60 * 60) # offset is in seconds !
>>> default = datetime.now(tz_plus_5)
现在在解析中使用此默认日期:
>>> Datetime = "2011-04-27 2:17:45"
>>> my_date = parser.parse(Datetime, default=default)
>>> my_date
datetime.datetime(2011, 4, 27, 2, 17, 45, tzinfo=tzoffset(None, 18000))
>>> my_date.strftime("%Y-%m-%d %H:%M:%S %z")
'2011-04-27 02:17:45 +0500'
答案 5 :(得分:0)
对于那些只需要在本地时间和UTC之间获得偏移的人来说,time
模块有一个属性time.altzone
,用于指定UTC与本地时间之间的差异,以秒为单位:
本地DST时区的偏移量,以UTC为单位的秒数(如果已定义)。如果当地DST时区在UTC以东(如在西欧,包括英国),则这是否定的。只有在日光非零的情况下才能使用它。
以下是其工作原理的示例:
>>> datetime.now().isoformat()
'2011-09-01T17:26:46.971000'
>>> datetime.utcnow().isoformat()
'2011-09-01T15:27:32.699000'
>>> time.altzone / (60*60)
-2
没有那么干净。