2017-06-22 133 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。 –