如何获得本地时间和GMT时间的差异



我得到了服务器日期,我需要得到这个日期与GMT的差值

我得到

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

我希望得到的结果是

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

试试这个:

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'

从你给的例子,它看起来给我,你正在寻找的是datetime.isoformat。该页中的示例显示了如何使用时区信息将datetime值转换为ISO格式。

要做到这一点,必须知道服务器日期的时区(或UTC偏移量)。你在这里得到的是一个"朴素"日期,没有时区信息,你无法猜测UTC的差异。

我认为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模块和相关类

datetime标准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'

对于那些只需要获得本地时间和UTC之间的偏移量的人,time模块有一个属性time.altzone,以秒为单位指定UTC和本地时间之间的差异:

本地DST时区的偏移量,单位是秒,如果有定义的话。如果当地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

没有比这更干净的了

相关内容

  • 没有找到相关文章

最新更新