在 Python 中将 datetime 更改为 Unix 时间戳

Posted

技术标签:

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

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

【问题讨论】:

可能是***.com/questions/2775864/…的副本 相关:Converting datetime.date to UTC timestamp in Python 【参考方案1】:

另一种方式是:

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

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

【讨论】:

注意:它会删除几分之一秒。要保留微秒,请使用:(d - datetime(1970,1,1)).total_seconds()【参考方案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 时间戳。以上所有答案都不能解决我的问题。请帮帮我。

以上是关于在 Python 中将 datetime 更改为 Unix 时间戳的主要内容,如果未能解决你的问题,请参考以下文章

在 DB2 中将数据类型从 DateTime 更改为 Time 会出错

如何在 html5 日期时间选择器中将格式从 12 小时更改为 24 小时?

在 SQL 中将行更改为列

Python:在数据框列中将秒转换为日期时间格式

如何在 Pandas 中将数据格式更改为“%Y%m%d”?

python 将中文日期字符串更改为datetime对象