python将日期转化为星期,python datetime时区转换
星期是一种日常生活中不常使用的日历系统。它通常用于政府和企业的财政年度或学校日历。本文介绍了如何使用Python语言实现周历与时间的转换。有兴趣的可以了解一下。
00-1010的前言基本介绍了使用datetime类格式进行转换的问题。正确的方法是使用isocalendar将日期转换成周历,使用fromisocalendar将周历转换成python代码。
目录
日历(ISO国际标准)
推出在线周日历(2022年)
前言
在开发过程中,有些总结咨询需要按周统计,下面就介绍一下如何进行相互换算。
基本介绍
strftime方法可以将时间转换成字符串。
Strptime方法可以将字符串转换成时间。
在“%Y,%W,%w”中,“%Y”表示年份,“%W”表示星期,“%w”表示星期几。
从日期时间导入日期时间
#时间到周日历
a=datetime.now()。strftime(%Y,%W,%w )
打印(一)# 2022,28,3
#每周日历周转时间
a=datetime.strptime(2022,12,3 , %Y,%W,%w )
打印(a) # 2022-03-23 00:00:00
使用datetime类格式化进行转换
看起来上面的问题已经解决了,但是问题在年初和年底。
以2021年12月和2022年1月为例。
2021年12月
周周一周二周三周四周五周六周日481234549678910111250131415161718195120212232425265227282930312022年1月
周周一周二周三周四周五周六周日521213456789210111
2
from datetime import datetimea = datetime.strptime("2021-12-31", "%Y-%m-%d")
print(a.strftime("%Y,%W,%w")) # 2021,52,5
a = datetime.strptime("2022-01-01", "%Y-%m-%d")
print(a.strftime("%Y,%W,%w")) # 2022,00,6
按iso标准,2022年1月1日应该归为2021年的最后一周
使用strftime方法格式化后为2022年第0月,所以这是有问题的
正确方法
使用isocalendar将日期转换为周日历
datetime类型的时间直接调用 isocalendar 方法
from datetime import datetimedef str_to_time(time_str: str) -> datetime:
return datetime.strptime(time_str, "%Y-%m-%d")
time_list = [
"2021-12-30",
"2021-12-31",
"2022-01-01",
"2022-01-02",
"2022-01-03",
]
for i in time_list:
t = str_to_time(i)
iso = t.isocalendar()
print(i, " > ", f"{iso.year},{iso.week},{iso.weekday}")
# 2021-12-30 > 2021,52,4
# 2021-12-31 > 2021,52,5
# 2022-01-01 > 2021,52,6
# 2022-01-02 > 2021,52,7
# 2022-01-03 > 2022,1,1
使用 fromisocalendar 将周日历转换为日期
from datetime import datetimetime_list = (
(2021, 52, 4),
(2021, 52, 5),
(2021, 52, 6),
(2021, 52, 7),
(2022, 1, 1),
)
for year, week, weekday in time_list:
t = datetime.fromisocalendar(year, week, weekday)
print(f"{year},{week},{weekday}", " > ", t)
# 2021,52,4 > 2021-12-30 00:00:00
# 2021,52,5 > 2021-12-31 00:00:00
# 2021,52,6 > 2022-01-01 00:00:00
# 2021,52,7 > 2022-01-02 00:00:00
# 2022,1,1 > 2022-01-03 00:00:00
python代码
from datetime import datetimedef datetime_to_isoweek(datetime_: datetime) -> tuple[int, int, int]:
"""时间转换为iso周日历
Args:
datetime_ (datetime): 时间
Returns:
tuple[int,int,int]: year,week,weekday
"""
iso = datetime_.isocalendar()
return iso.year, iso.week, iso.weekday
def isoweek_to_datetime(isoweek: tuple[int, int, int]) -> datetime:
"""iso周日历转换为时间
Args:
isoweek (tuple[int,int,int]): year,week,weekday
Returns:
datetime: 时间
"""
year, week, weekday = isoweek
return datetime.fromisocalendar(year, week, weekday)
以上就是Python实现周日历与时间相互转换的详细内容,更多关于Python周日历与时间互换的资料请关注盛行IT软件开发工作室其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。