Python实现周日历与时间相互转换

 更新时间:2022年07月14日 10:13:57   作者:万百入年许老  
周日历是日常生活中不常用到的历法系统,一般用于政府、商务的会计年度或者学校教学日历中。本文为大家介绍了如何利用Python语言实现周日历与时间相互转换,感兴趣的可以学习一下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

前言

周日历(ISO国际标准)

介绍在线周日历(2022年)

基本介绍

在开发过程中,有些汇总咨询需要以周为单位统计,所以介绍下如何进行相互转换。

使用datetime类格式化进行转换

strftime 方法可以将时间转换为字符串

strptime 方法可以将字符串转为时间

"%Y,%W,%w"中,"%Y"代表年份,"%W"代表周,"%w"代表一周内的第几天

from datetime import datetime

# 时间转周日历
a = datetime.now().strftime("%Y,%W,%w")
print(a)    # 2022,28,3

# 周日历转时间
a = datetime.strptime("2022,12,3","%Y,%W,%w")
print(a)    # 2022-03-23 00:00:00

问题

以上貌似问题解决了,但是问题出在年初和年尾

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

2021年12月

周数周一周二周三周四周五周六周日
48  12345
496789101112
5013141516171819
5120212223242526
522728293031  

2022年1月

周数周一周二周三周四周五周六周日
52     12
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将日期转换为周日历

datetime类型的时间直接调用 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 将周日历转换为日期

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]:
    """时间转换为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周日历与时间互换的资料请关注程序员之家其它相关文章!

相关文章

  • Python 机器学习之线性回归详解分析

    Python 机器学习之线性回归详解分析

    回归是监督学习的一个重要问题,回归用于预测输入变量和输出变量之间的关系,特别是当输入变量的值发生变化时,输出变量的值也随之发生变化。回归模型正是表示从输入变量到输出变量之间映射的函数
    2021-11-11
  • python利用pd.cut()和pd.qcut()对数据进行分箱操作

    python利用pd.cut()和pd.qcut()对数据进行分箱操作

    本文主要介绍了python利用pd.cut()和pd.qcut()对数据进行分箱操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • Python入门学习之字符串与比较运算符

    Python入门学习之字符串与比较运算符

    这篇文章主要介绍了Python入门学习之字符串与比较运算符,是Python语法中的基础知识,需要的朋友可以参考下
    2015-10-10
  • python如何实现TF-IDF算法

    python如何实现TF-IDF算法

    这篇文章主要介绍了python如何实现TF-IDF算法问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Caffe均值文件mean.binaryproto转mean.npy的方法

    Caffe均值文件mean.binaryproto转mean.npy的方法

    今天小编就为大家分享一篇Caffe均值文件mean.binaryproto转mean.npy的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • 浅析Python中的缩进错误

    浅析Python中的缩进错误

    在编程中,我们经常会遇到错误,缩进错误是 Python 中最常见的错误之一,它会使我们的代码难以理解,并且难以调试,下面小编就来和大家简单聊聊Python中的缩进错误吧
    2023-10-10
  • python怎么对数字进行过滤

    python怎么对数字进行过滤

    在本篇内容中小编给大家整理的是关于python怎么对数字进行过滤的实例方法内容,需要的朋友们可以参考下。
    2020-07-07
  • ubuntu系统如何从python3.7升级到python3.8

    ubuntu系统如何从python3.7升级到python3.8

    这篇文章主要给大家介绍了关于ubuntu系统如何从python3.7升级到python3.8的相关资料,Python是一种广泛使用的编程语言,而Ubuntu是一个流行的开源操作系统,通过升级Python您可以获得新功能、性能改进和安全修复,需要的朋友可以参考下
    2023-11-11
  • 深入解析Python中的__builtins__内建对象

    深入解析Python中的__builtins__内建对象

    __builtins__ 是内建模块__builtin__中的对象,使用Python中的内建函数时会通过__builtins__引导,这里我们就来深入解析Python中的__builtins__内建对象,需要的朋友可以参考下
    2016-06-06
  • python property的使用技巧分享

    python property的使用技巧分享

    这篇文章主要介绍了python property的使用技巧分享,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-05-05

最新评论

?


http://www.vxiaotou.com