2017-05-24 5 views
0

lsのrsyncによって返された日付と時刻をtime.time()が返したUnix epoch time floatに変換する必要があります。人間が読める日時をUnixの時間浮動小数点に変換

今の私にとっては、 2017/05/24 hh:mm:ssのようになります。 しかし、私が知っている限り、それはrsyncがsshとネイティブlsを使用するのでマシンごとに異なる可能性があります。

最も一般的な人間が読める日時をUnixのtime floatに簡単に変換する簡単な方法はありますか? 明確にする。 DとTのテキスト表現を浮動小数点に変換できるようにしたい。

datetimeがこれを行うことができれば、私は現時点でどのように見つけられないのでしょうか。

+0

ls' 'のために、あなたは時間をフォーマットする方法を指定する--timeスタイル= +%S''」-l' LSを使用することができます。それは実際にディストリビューションに依存していませんが、「ロケール」についてはより多くのことがあります:時間/日付を表す方法に関する文化的設定。私はイスラエルに設立された機械がユダヤ人の年を使うことが可能であると考えています。 –

+0

さて、はい、私はローカル設定を尊重していると確信しています。それは私をまったく助けません。特に、私はrsyncを使用してlsにアクセスしています。そこから時間の出力フォーマットに影響を与えることができるかどうかがわかりますが、私はそれを疑っています。私はおそらくsshを直接ファイルの統計に到達するために使用することになりますが、Pythonが変換を行うことができるかどうかを知ることは良いことです。それはいくつかのものを簡単にするだろう。 – Dalen

答えて

1

time.strptimeを最初に使用し、次にcalendar.timegm を使用する必要があります。現地時間またはUTC時刻に変換するかどうかによって異なるオプションがあります。それについてのドキュメントを見てください。 フロート部分を取得するには、時間、分、秒、およびミリ秒を入力する必要があります。あなたの例では、年、月、日のみを与えているので、残りの部分はゼロ、すなわちミリ秒ではなく、フロート部分がないと考えられます。ここで

最小限例:

import calendar, time 

t = time.strptime('2017/05/24', '%Y/%m/%d') 
epoch = calendar.timegm(time.struct_time(t)) 
print(epoch) 

1495584000 
+0

優秀! time.ctime(epoch)は 'WedMay 24 00:00:00 2017'を返します。しかしこれはフォーマット認識を自動化しません。それが実装されていれば素晴らしいかもしれません。多分正規表現で何かを行うことができます。 – Dalen

+0

time.strptime( '2017/05/24 23:45:04'、「%Y /%m /%d%H:%M:%」などの形式で使用できる形式を決定するだけで済みます。 S ")この表を確認してください。https://docs.python.org/3.7/library/time.html#time.strftime –

+0

形式が統一されていない場合は、それぞれに個別のケースを作成する必要があります。 –

関連する問題