Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python将时间字符串转换为刻度?_Python_Time - Fatal编程技术网

Python将时间字符串转换为刻度?

Python将时间字符串转换为刻度?,python,time,Python,Time,有没有一种简单的方法可以将显示日期/时间数据的字符串转换为Unix刻度值 我正在使用python脚本直接从国家气象中心下载一些数据文件中的日期/时间字符串 字符串的格式为YearMonthDayHourminuteSeconds,例如20170108233000 我可以很容易地将其分解为格式良好的字符串,但有没有办法将其转换为记号,因为这对排序、消除重复数据等很有用 我在考虑一个简单的yearticks=(year-1970)*(365*24*60*60),但它没有考虑闰年和闰秒 有一种简单的方

有没有一种简单的方法可以将显示日期/时间数据的字符串转换为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.*出于某种原因,我道歉:()。