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

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

  基本介绍:

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

  使用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.cloudads.cn/archives/4089.html

发表评论

登录后才能评论