2017-06-22 17 views
-1

我在接下来的格式字符串:2017-02-14T09:51:46.0​​00-0600的Python - 解析和转换串入时间戳

什么是分析和转换串入时间戳最好的方法? 我有选择使用正则表达式或写我自己的函数进行解析,但有没有内置的方法可以帮助我?

+1

帮你自己一个忙,并使用搜索功能。对于它的价值,我的解决方案是'dateutil.parser.parse('2017-02-14T09:51:46.0​​00-0600')。timestamp()'(完全未测试,所以不能保证)。但我使用'dateutil.parser.parse'主要是因为我很懒,而且我期望有更好的方法来解析这个特定的字符串。 – stephan

+0

谢谢斯蒂芬,我再次看看搜索功能,正在寻找一个方向使用正则表达式或模块来帮助解析,让我在一个方向 –

回答

0

第一部分将创建DateTime对象:

from datetime import datetime 

date_string = "2017-02-14T09:51:46.000-0600" 
# I'm using date_string[:-9] to skip ".000-0600" 
format_date = datetime.strptime(date_string, '%Y-%m-%dT%H:%M:%S.%f%z')) 

后的格式日期:

print(format_date) 
2017-02-14 09:51:46 

而时间戳是:

print(format_date.timestamp()) 
1487062306.0 

这里很少有关于python reference page的说明,您可以看到我使用的'%Y-%m-%dT%H:%M:%S.%f%z')格式说明符的定义。

  • %Y:以十进制数表示的年份,例如, 1970,1988,2001,2013
  • %米:月作为零填充的十进制数(例如01,02,...,12)
  • %d:月份的日作为零(例如01,02,...,31)
  • %H:小时 (24小时制)作为零填充的十进制数(例如00,01,...,23 )
  • %M:作为零填充十进制数的分钟(例如00,01,...,59)
  • %S:第二个作为零填充十进制数(例如, 00,01,...,59)
  • %F:微秒为十进制数,在左侧(000000,000001零填充,...,999999)
  • %Z:UTC以+ HHMM或-HHMM的形式偏移,如果对象是幼稚的,则为空字符串(空或+0000,-0400,+1030)
+0

这是非常丰富和简洁,非常感谢! 正是我在找什么! –

+0

很高兴能帮到你! :) –

+0

这不是时区?来自Python 3。2开始,你可以做'datetime.datetime.strptime(“2017-02-14T09:51:46.0​​00-0600”,'%Y-%m-%dT%H:%M:%S.%f%z' ).timestamp()'如果我正确记得格式字符串定义。但是因为我永远无法正确记住它,所以我使用'dateutil.parse.parse';) – stephan

0

这里是代码的形式,你可以分析和转换字符串中的时间戳

>>> import time 
    >>> import datetime 
    >>> s = "2017-02-14T09:51:46.000-0600" 
    >>> time.mktime(datetime.datetime.strptime(s, "%d/%m/%Y").timetuple()) 
     1322697600.0 
+0

我得到了它的逻辑,但我在Python的工作,认为建成在上面的方法是在JAVA –

+0

请编辑你的答案。他明确要求Python,而不是Java。 –