65

年の値と年の日があり、日付(日/月/年)に変換したいと思います。

4

6 に答える 6

104
datetime.datetime(year, 1, 1) + datetime.timedelta(days - 1)
于 2010-03-11T18:26:01.633 に答える
32
>>> import datetime
>>> datetime.datetime.strptime('2010 120', '%Y %j')
datetime.datetime(2010, 4, 30, 0, 0)
>>> _.strftime('%d/%m/%Y')
'30/04/2010'
于 2010-03-11T18:25:30.653 に答える
7

クラスのtoordinal()andfromordinal()関数をdate使用できます。

from datetime import date
date.fromordinal(date(year, 1, 1).toordinal() + days - 1)
于 2010-03-11T18:29:14.800 に答える
4

最近はかなり一般的であるため、指定された単位とオリジンpandasで使用するオプション:pd.to_datetime

import pandas as pd

day, year = 21, 2021

print(pd.to_datetime(day-1, unit='D', origin=str(year)))
# 2021-01-21 00:00:00
于 2021-01-13T16:57:25.427 に答える
0
>>>import datetime
>>>year = int(input())
>>>month = int(input())
>>>day = int(input())
data = datetime.datetime(year,month,day)
daynew = data.toordinal()
yearstart = datetime.datetime(year,1,1)
day_yearstart = yearstart.toordinal()
print ((daynew-day_yearstart)+1)
于 2018-06-01T11:14:44.880 に答える
0

mx.DateTimeモジュールを使用して日付を取得することは、とを使用して上記で提案されたものと同様datetimeですtimedelta。すなわち:

import mx.DateTime as dt 
date = dt.DateTime(yyyy,mm,dd) + dt.DateTimeDeltaFromDays(doy-1)

したがって、年(たとえば、2020)とdoy(年の日、たとえば234)を知っているとすると、次のようになります。

date = dt.DateTime(2020,1,1) + dt.DateTimeFromDays(233) 

これは

2020-08-21 00:00:00.00

mx.DateTimeライブラリの利点は、多くの便利な機能があることです。そのホームページの説明によると:

  • ほぼシームレスな方法で日付/時刻の文字列値を解析します。
  • 多くの異なる代替の日付/時刻ストレージ形式との間の変換ルーチンを提供します。
  • 統合を簡単にする使いやすいCAPIが含まれています。
  • 高速、メモリ効率、正確。
  • グルジア暦とユリウス暦のサポート。
  • 有効な日付の広大な範囲(BCの日付を含む)。
  • 安定性、堅牢性、移植性(mxDateTimeは約15年前から存在しています)。
  • Pythonの時刻および日時モジュールと完全に相互運用します。
于 2020-11-17T18:14:05.170 に答える