如何在Localtime和GMT时间python中获得差异?

时间:2011-04-27 07:45:42

标签: python datetime timezone

我得到了服务器日期,我需要从GMT获得这个日期的差异

我得到了

Datetime = "2011-04-27 2:17:45"

我想得到像

这样的结果
Datetime = "2011-04-27 2:17:45 +0500"

6 个答案:

答案 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

没有那么干净。