PythonとMatlabには、次のような整数の日付表現が含まれていることがよくあります。
733828.0 733829.0 733832.0 733833.0 733834.0 733835.0 733836.0 733839.0 733840.0 733841.0
これらの番号は、今年のいくつかの日付に対応しています。どの関数がそれらをYYYYMMDD形式に戻すことができるか知っていますか?
どうもありがとう!
PythonとMatlabには、次のような整数の日付表現が含まれていることがよくあります。
733828.0 733829.0 733832.0 733833.0 733834.0 733835.0 733836.0 733839.0 733840.0 733841.0
これらの番号は、今年のいくつかの日付に対応しています。どの関数がそれらをYYYYMMDD形式に戻すことができるか知っていますか?
どうもありがとう!
datetime.datetime
クラスはここであなたを助けることができます。これらの値が整数日として扱われる場合、以下は機能します(値を指定しないでください)。
>>> from datetime import datetime
>>> dt = datetime.fromordinal(733828)
>>> dt
datetime.datetime(2010, 2, 25, 0, 0)
>>> dt.strftime('%Y%m%d')
'20100225'
値をfloatとして表示しますが、上記はfloatを使用しません。データが何であるか(およびデータがどこから来ているか)についてより詳細に説明できれば、より完全な回答を提供することが可能になります。
Pythonの例はすでに示されているので、これがmatlabの例です。
>> datestr(733828, 'yyyymmdd')
ans =
20090224
また、似ているように見えますが、MatlabとPythonでは実際には異なることに注意してください。
Matlab
シリアル日付番号は、特定の日時からの日数の合計と小数を表し、datenum('Jan-1-0000 00:00:00')
数値1を返します(0000年は単なる参照ポイントであり、実際の年として解釈されることを意図したものではありません)。Python、 1年目の1月1日が序数1である、先発グレゴリオ暦の序数に対応する日付を返します。
datetime.date.fromordinal
したがって、それらは366日異なることになります。これは、明らかに0年の長さです。
733828.0のような日付は、西暦1年1月1日(および日数の小数部)から数えたRataDieの日付です。UTCまたはタイムゾーンによる場合があります。
ジュリアンデートは、主に天文学者によって使用され、紀元前4713年1月1日グリニッジ正午からの日数(および日数の小数部)をカウントします。ユリウス日は、現在の年の1月1日からの日付カウントである序数と混同されることがよくあります(2月2日=序数33日)。
したがって、datetimeはこれらを通常の日付と呼んでいますが、これはPythonの世界ではローカルでのみ意味があると思います。
733828.0はタイムスタンプですか?その場合、次のことができます。
import datetime as dt
dt.date.fromtimestamp(733828.0).strftime('%Y%m%d')
ピーター・ハンセンは正しいと思います:)
私は英語を母国語とはしていません。助けようとしているだけです。タイムスタンプと序数の違いはよくわかりません:(