2017-01-09 7 views
1

日付/時刻データを示す文字列をUnixのティック値に変換する簡単な方法はありますか?Pythonは時間文字列をダンプに変換しますか?

国の気象センターから直接pythonスクリプトを使用してダウンロードしているデータの一部のファイルに日付/時刻文字列があります。

文字列の形式は、yearmonthdayhourminutececondsです。 20170108233000.

私は簡単に整形された文字列に分割することができますが、重複データなどを排除するソートに便利なようにダンプに変換する方法はありますか?

私は単純なyearticks =(year-1970)*(365 * 24 * 60 * 60)を考えていましたが、うるう年とうるう秒を考慮していません。

これを行う簡単な方法はありますか?

+0

これであなたはどこにいるのですか?その文字列をPythonの 'datetime'オブジェクト(' .strptime(...) ')に変換するか、そのオブジェクト(' .timestamp() ')からUnixのタイムスタンプを取得しますか? – jonrsharpe

+0

私はPythonでうるう秒を追跡するものはないと思います。それが本当の必要条件なら、あなたはいくつかの問題を抱えています。 –

+0

[Wikipedia](https://en.wikipedia.org/wiki/Unix_time)によると、Unix時間はうるう秒を無視するので、それに関してはPythonと同じです。良いことも、うるう秒を追跡していたライブラリは非常に難しいでしょう。 –

答えて

1

私はあなたがdatetimeオブジェクトにそれを解析して、Januari 1、1970とその瞬間の間の秒数を計算勧め:

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() 

EDIT

またはすることができます、と@で、これを実行する

d.timestamp() 

:jonrsharpeは、すぐに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日に生成されることに注意してください。しかし、これはベルギー時間です。

+0

'timestamp'メソッドがあります。開始ポイントを自分で計算する必要はありません! – jonrsharpe

+0

@jonrsharpe:提案に感謝します。しかし、何らかの理由で私が通訳でこれを行うと、エラーになりますか? –

+0

ああ...何のエラー? – jonrsharpe

関連する問題