人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)

Python實現(xiàn)周日歷與時間相互轉(zhuǎn)換

發(fā)布日期:2022-07-20 19:28 | 文章來源:CSDN

周日歷(ISO國際標準)

介紹在線周日歷(2022年)

基本介紹

在開發(fā)過程中,有些匯總咨詢需要以周為單位統(tǒng)計,所以介紹下如何進行相互轉(zhuǎn)換。

使用datetime類格式化進行轉(zhuǎn)換

strftime 方法可以將時間轉(zhuǎn)換為字符串

strptime 方法可以將字符串轉(zhuǎn)為時間

"%Y,%W,%w"中,"%Y"代表年份,"%W"代表周,"%w"代表一周內(nèi)的第幾天

from datetime import datetime
# 時間轉(zhuǎn)周日歷
a = datetime.now().strftime("%Y,%W,%w")
print(a) # 2022,28,3
# 周日歷轉(zhuǎn)時間
a = datetime.strptime("2022,12,3","%Y,%W,%w")
print(a) # 2022-03-23 00:00:00

問題

以上貌似問題解決了,但是問題出在年初和年尾

以2021年12月,2022年1月舉例

2021年12月

周數(shù)周一周二周三周四周五周六周日
4812345
496789101112
5013141516171819
5120212223242526
522728293031

2022年1月

周數(shù)周一周二周三周四周五周六周日
5212
13456789
210111213141516
317181920212223
424252627282930
531
from datetime import datetime
a = 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將日期轉(zhuǎn)換為周日歷

datetime類型的時間直接調(diào)用 isocalendar 方法

from datetime import datetime

def 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 將周日歷轉(zhuǎn)換為日期

from datetime import datetime
time_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 datetime

def datetime_to_isoweek(datetime_: datetime) -> tuple[int, int, int]:
 """時間轉(zhuǎn)換為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周日歷轉(zhuǎn)換為時間
 Args:
  isoweek (tuple[int,int,int]): year,week,weekday
 Returns:
  datetime: 時間
 """
 year, week, weekday = isoweek
 return datetime.fromisocalendar(year, week, weekday)

以上就是Python實現(xiàn)周日歷與時間相互轉(zhuǎn)換的詳細內(nèi)容,更多關于Python周日歷與時間互換的資料請關注本站其它相關文章!

國外服務器租用

版權聲明:本站文章來源標注為YINGSOO的內(nèi)容版權均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內(nèi)容涉嫌侵權,請聯(lián)系alex-e#qq.com處理。

相關文章

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務

7x24全年不間斷在線

專屬顧問服務

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務熱線

關注
微信

關注官方微信
頂部