资讯专栏INFORMATION COLUMN

如何使用Python实现一周的日历与时间之间的相互转换

89542767 / 777人阅读


  作为周日历,在生活中不常用到,它一般用于政府,以及相关会计之间的计划或者年度相关的日历之中。那么,具体之间的操作方法,下文就给大家详细的解答。


  基本介绍:


  在开发过程中,有些像以单位为一个小的计量单位,下面给大家详细解答。


  使用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月

0.png

  2022年1月

1.png

  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


  正确方法


  使用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)


  以上就是Pythom实现周日历的具体代码实例,希望可以给大家带来帮助。


文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/127692.html

相关文章

  • 全面解析Java日期时间API

    摘要:类是一个抽象类,它为特定瞬间与一组诸如等日历字段之间的转换提供了一些方法,并为操作日历字段例如获得下星期的日期提供了一些方法。是不变的日期时间对象代表一个日期时间,往往被视为年月日时分秒。获得实例的日期和时间。 时区 GMT(Greenwich Mean Time):格林尼治时间,格林尼治标准时间的正午是指当太阳横穿格林尼治子午线时(也就是在格林尼治上空最高点时)的时间。 UTC(U...

    robin 评论0 收藏0
  • Calendar工具类对跨年星期处理个人总结

    摘要:在设置或获得或字段时,必须确定一个月或一年的第一个星期,以此作为参考点。一个月或一年的第一个星期被确定为开始于的最早七天,它最少包含那一个月或一年的天数。例如,特定子类可能将某一年第个星期之前的那个星期指定为前一年的第个星期。 Calendar工具类解释 首先解释下Calendar工具类的作用。根据API的解释,Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MON...

    王笑朝 评论0 收藏0
  • 带你开发一个二维周视图日历

    摘要:即之前实现了一个月视图日历,我们今天来实现一个二维周视图的日历。难点实现内容部件插入我们实现这个二维周视图日历的主要目的就是要支持插入任意的内容,上面已经准备好了插入内容的元素,这里要做的就是将数据绘制成放置在合适的位置。 即之前实现了一个月视图日历,我们今天来实现一个二维周视图的日历。 以下进行分析其中的关键部分。 结构准备 不同之处在于其在日历的基础上还有一个分类轴,用于展示不同的...

    张金宝 评论0 收藏0
  • 利用JavaScript实现ISO周日历

      知识普及  阳历:就是以太阳来计算日期的一类历法;  阴历:根据月亮周期制定出的历法,由阴转晴,再由晴转阴为一个月,换算下来合29天12个小时44分零二秒八,接近30天。  公历:属阳历的一种,我国现在使用的就是公历;  农历:我国的农历是一种阴阳合历,用来指导农业十分方便。  总结来说公历属于阳历,但是阳历并不一定是公历。农历不是阴历,而是阴阳历,是以阴历为主,阳历为辅。  公历:用阿拉伯数...

    3403771864 评论0 收藏0
  • Python对日期时间处理

    摘要:中提供了一个和的模块可以用来做格式化日期和时间的。格式化日期通过模块中方法来格式化日期函数接收时间元组并返回以可读字符串表示薪资的时间格式的话由参数决定。每日宽度间隔为字符每行的长度为是每星期的行数。 我们可以通过学习在Python中对日期时间的处理,可以在快速的完成工作,比如: 将日期时间作为日志信息的内容输入 计算某一个功能的执行时间 用日期命名一个文件的名称 记录或者展示文件的...

    techstay 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<