Python将时间字符串转换为刻度?
有没有一种简单的方法可以将显示日期/时间数据的字符串转换为Unix刻度值 我正在使用python脚本直接从国家气象中心下载一些数据文件中的日期/时间字符串 字符串的格式为YearMonthDayHourminuteSeconds,例如20170108233000 我可以很容易地将其分解为格式良好的字符串,但有没有办法将其转换为记号,因为这对排序、消除重复数据等很有用 我在考虑一个简单的yearticks=(year-1970)*(365*24*60*60),但它没有考虑闰年和闰秒Python将时间字符串转换为刻度?,python,time,Python,Time,有没有一种简单的方法可以将显示日期/时间数据的字符串转换为Unix刻度值 我正在使用python脚本直接从国家气象中心下载一些数据文件中的日期/时间字符串 字符串的格式为YearMonthDayHourminuteSeconds,例如20170108233000 我可以很容易地将其分解为格式良好的字符串,但有没有办法将其转换为记号,因为这对排序、消除重复数据等很有用 我在考虑一个简单的yearticks=(year-1970)*(365*24*60*60),但它没有考虑闰年和闰秒 有一种简单的方
有一种简单的方法可以做到这一点吗?我建议您将其解析为一个
datetime
对象,然后计算1970年1月1日到该时刻之间的秒数:
import datetime
d = datetime.datetime.strptime( "20170108233000", "%Y%m%d%H%M%S")
t0 = datetime.datetime(1970, 1, 1, tzinfo=timezone.utc)
ticks = (d - t0).total_seconds()
编辑:
或者,正如@jornsharpe所建议的,您可以立即使用timestamp
方法:
d.timestamp()
在我的机器上运行此操作会产生:
$ python
Python 2.7.12 (default, Nov 19 2016, 06:48:10)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import datetime
>>>
>>> d = datetime.datetime.strptime( "20170108233000", "%Y%m%d%H%M%S")
>>> t0 = datetime.datetime(1970, 1, 1)
>>> ticks = (d - t0).total_seconds()
>>> ticks
1483918200.0
>>>
$ date -d @1483918200
Mon Jan 9 00:30:00 CET 2017
请注意,这将生成2017年1月9日。但现在是比利时时间。那么,你还停留在哪一部分?将该字符串转换为Python
datetime
对象(.strtime(…)
)或从该对象获取Unix时间戳(.timestamp()
)?我认为Python中没有任何跟踪闰秒的东西。如果这是一个真正的需求,那么您将遇到一些麻烦。根据Unix,时间忽略闰秒,因此在这方面它与Python相同。这也是一件好事,因为一个记录闰秒的库将非常困难。有一个timestamp
方法,你不需要自己计算起点@谢谢你的建议。然而,出于某种原因,如果我在解释器中执行此操作,它会给出一个错误?@jonrsharpe:AttributeError:'datetime.datetime'对象没有属性'timestamp'
Ah-“3.3版中的新版本”@jonrsharpe:是的,我发现自己同时在运行Python 2.7.*出于某种原因,我道歉:()。