0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

DOY (Day Of the Year)を日付フォーマットに変換 / How to convert DOY to Month and Date

Last updated at Posted at 2020-08-19

DOY (Day Of the Year, or DayNumber)は日本ではあまり使われないようだが、ある日付がその年の1月1日から数えて何日目にあたるかを示す日付の通し番号であり、1-366の値を取る。別途「年」を表す記号と合わせて製品の製造日情報などで使われる事が多いと思われる。このDOYから一般の日付、Dateに変換する方法を探したがそのものズバリは見つからなかったので備忘録を兼ねて記す。

DOYはPythonでは Day of the year as a decimal number [001,366] という事でPythonのclass time.struct_timeに存在しAttributeはtm_ydayとなっている。strftime等で扱う場合のDirectiveは%jとなる。

例えば年番号: 19、DOY: 275が与えられた場合は以下の様にstrptimeで入力し、strftimeで形式を指定して任意の日付フォーマットで書き出せる。2019年のDOY275が10月2日であると分かる。

import time
ddd=time.strptime("19 275","%y %j")
print (ddd)
time.struct_time(tm_year=2019, tm_mon=10, tm_mday=2, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=275, tm_isdst=-1)
from time import strftime
strftime("%d/%m/%y", ddd)
'02/10/19'

追記
その後、こういうのを見つけてしまいました。
datetime.datetime(year, 1, 1) + datetime.timedelta(days - 1)
上の例の year=2019, days = 275 の結果は
datetime.datetime(2019, 10, 2, 0, 0)
となります。書式指定して書き出すなら手間は変わらないかもしれませんがシンプルですね。

参考URL
https://docs.python.org/2/library/time.html
https://stackoverflow.com/questions/2427555/python-question-year-and-day-of-year-to-date

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?