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
class が役立ちます。これらの値が整数日として扱われる場合、以下は機能します(何であるかを指定しません)。
>>> from datetime import datetime
>>> dt = datetime.fromordinal(733828)
>>> dt
datetime.datetime(2010, 2, 25, 0, 0)
>>> dt.strftime('%Y%m%d')
'20100225'
値を浮動小数点数として表示し、上記は浮動小数点数を取りません。データが何であるか(およびそのデータの出所)についてより詳細に説明できる場合は、より完全な回答を提供することができます。
Pythonの例はすでに示されているので、MATLABの例を次に示します。
_>> datestr(733828, 'yyyymmdd')
ans =
20090224
_
また、これらは類似しているように見えますが、MatlabとPythonでは実際には異なるものであることに注意してください。
Matlab
シリアル日付番号は、特定の日時からの日数の全体および一部を表します。ここで、datenum('Jan-1-0000 00:00:00')
は数値1を返します(年0000は単なる参照ポイントであり、意図されていません実際の年として解釈されます。)Python、 _
datetime.date.fromordinal
_
1年目の1月1日が序数1である、発作的なグレゴリオ暦序数に対応する日付を返します。
したがって、それらは366日で異なります。これは明らかに0年の長さです。
733828.0のような日付は、ラタダイの日付であり、西暦1年1月1日から数えられます(および小数日数)。それらは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')
ピーター・ハンセンは正しいと思います:)
私はネイティブスピーカーではありません。ただ助けようとしています。タイムスタンプと序数の違いがよくわかりません:(