"YYYY-MM-DD"例如,我有一個日期格式"2022-03-09"。現在是2022年的第68天。有沒有辦法得到2021年的第68天?更一般地說,如果我有一個"YYYY-MM-DD"格式的日期,即一年中的第 N 天,有沒有一種快速的方法來計算上一年的第 N 天?
uj5u.com熱心網友回復:
你可以這樣做:
from datetime import datetime, timedelta
date_string = '2020-03-09'
# Parse the string to a datetime.date object
date = datetime.strptime(date_string, '%Y-%m-%d')
# Get the number N of the day in the year
N = date.timetuple().tm_yday
# Take 1st of january of last year and add N-1 days
N_last_year = (
date.replace(year=date.year-1, month=1, day=1)
timedelta(days=N-1)
)
print(N_last_year.date())
或者,另一個基于閏年的有趣解決方案。這是基于去年的第 N 天與今年相同的事實,除非日期在 2 月 29 日之后并且某處有閏年。
from datetime import datetime, timedelta
def leap(year: int) -> bool:
# Returns True if year is a leap year, False otherwise
return (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0)
date_string = '2020-03-09'
# Parse the string to a datetime.date object
date = datetime.strptime(date_string, '%Y-%m-%d')
# Get the number N of the day in the year
N = date.timetuple().tm_yday
date_last_year = date.replace(year=date.year-1)
# Do the cool thing
if date.month >= 3:
if leap(date.year):
date_last_year = timedelta(days=1)
elif leap(date.year-1):
date_last_year = timedelta(days=-1)
print(date_last_year.date())
uj5u.com熱心網友回復:
這些datetime物件將為您提供(https://docs.python.org/3/library/datetime.html)。
實際上,您可以計算日期和年初之間的時間間隔。然后您可以將此差異添加到明年年初。
import datetime
date_string = "2022-03-09"
date_object = datetime.datetime.strptime(date_string, "%Y-%m-%d").date()
beginning_of_year = datetime.date(date_object.year, 1, 1)
time_difference = date_object - beginning_of_year
beginning_of_last_year = datetime.date(date_object.year - 1, 1, 1)
same_day_last_year = beginning_of_last_year time_difference
print(same_day_last_year)
然而,結果令人失望,因為它實際上是同一天......
uj5u.com熱心網友回復:
我認為你可以做類似的事情
from datetime import timedelta, date
year = timedelta(days=365)
today = date.fromisoformat("2022-03-09")
print(today - year)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/442403.html
上一篇:將列轉換為日期格式
