【问题标题】:Change datetime to Unix time stamp in Python在 Python 中将 datetime 更改为 Unix 时间戳
【发布时间】:2012-01-22 11:38:15
【问题描述】:

请帮我将日期时间对象(例如:2011-12-17 11:31:00-05:00)(包括时区)更改为 Unix 时间戳(如 Python 中的函数 time.time())。

【问题讨论】:

标签: python unix datetime time timestamp


【解决方案1】:

另一种方式是:

import calendar
from datetime import datetime
d = datetime.utcnow()
timestamp=calendar.timegm(d.utctimetuple())

Timestamp 是 unix 时间戳,它显示与 datetime 对象 d 相同的日期。

【讨论】:

【解决方案2】:
import time

import datetime

dtime = datetime.datetime.now()

ans_time = time.mktime(dtime.timetuple())

【讨论】:

  • 本地时间可能不明确,例如,在 DST 过渡结束期间(“回退”)。 timetuple()tm_isdst 设置为 -1,这迫使 mktime() 猜测,即有 50% 的可能性它会出错。使用 UTC 时间或感知日期时间对象。
【解决方案3】:

不完整的答案(不涉及时区),但希望有用:

time.mktime(datetime_object.timetuple())

**根据以下评论编辑**

在我的程序中,用户输入日期时间,选择时区。 ...我创建了一个时区列表(使用 pytz.all_timezones)并允许用户从该列表中选择一个时区。

Pytz 模块提供了必要的转换。例如。如果dt 是您的datetime 对象,并且用户选择了“美国/东部”

import pytz, calendar
tz = pytz.timezone('US/Eastern')
utc_dt = tz.localize(dt, is_dst=True).astimezone(pytz.utc)
print calendar.timegm(utc_dt.timetuple())

参数is_dst=True 用于解决夏令时结束时1 小时间隔内的模糊时间(请参阅此处http://pytz.sourceforge.net/#problems-with-localtime)。

【讨论】:

  • 我真的需要处理时区问题。
  • 输入的日期时间对象是否包含正确的 tzinfo?或者,如果没有,你怎么知道你对哪个时区感兴趣?
  • 是的。在我的程序中,用户输入日期时间,选择时区。我使用 python 语言,创建了一个时区列表(使用 pytz.all_timezones)并允许用户从该列表中选择一个时区。我的问题是如何将日期时间与时区 id 一起转换为 unix 时间戳。以上所有答案都不能解决我的问题。请帮帮我。
猜你喜欢
  • 2017-10-15
  • 2020-10-09
  • 1970-01-01
  • 1970-01-01
  • 2014-10-26
  • 2015-04-13
  • 2013-11-17
相关资源
最近更新 更多