zoukankan      html  css  js  c++  java
  • Python计算给定日期的周内的某一天

    先理一下思路:
    1、weekday会根据某个日期返回0到6的一个数字来表示星期几对吧,0==星期一
    我们来列一个表:

    [0,1,2,3,4,5,6]

    2、知道了星期几之后,你可以计算出那一周相对于这个0到6的数字的差值(比如你确定一个比较值0,那么取得该日期的weekday值假设为n,那么这个差值就是0-n对吧,针对第一条发现的列表,假设我们指定的日期是星期二,weekday数值为1:

    [0,1,2,3,4,5,6]
    n

    就是说n在列表中1的位置,数值也是1,那么前面星期一是否就刚好是0-1的相对位置了呢?
    理解了么?0-n就刚好是星期一所代表的相对位置。
    那么星期二呢?是不是就是0-n+1?
    自然的,星期三就是0-n+2
    0-n+3
    0-n+4
    0-n+5
    0-n+6,就是星期日

    3、知道了相对位置,那么只需要进行日期的叠加就可以了。
    以下的代码不推荐你直接使用:

    import datetime,time

    def thisweek(str_dat 大专栏  Python计算给定日期的周内的某一天e):
    try:
    #尝试将参数转换成为datetime.date格式,1是方便后面的日期加减,2是验证日期是否有效。
    date_input = datetime.date.fromtimestamp(time.mktime(time.strptime(str_date,"%Y-%m-%d")))
    except:
    raise '参数错误:错误的日期,期待值2016-01-01格式'

    n = datetime.datetime.weekday(date_input)
    weeklist = []
    for i in range(7):
    this_day=date_input + datetime.timedelta(0-n+i)
    weeklist.append([i,this_day])

    return weeklist

    运行结果为:【星期几,日期】,同样0表示星期一

    thisweek('2016-07-18')
    [[0, datetime.date(2016, 7, 18)], [1, datetime.date(2016, 7, 19)], [2, datetime.date(2016, 7, 20)], [3, datetime.date(2016, 7, 21)], [4, datetime.date(2016, 7, 22)], [5, datetime.date(2016, 7, 23)], [6, datetime.date(2016, 7, 24)]]

  • 相关阅读:
    linux 下spyder安装
    【C++】fill函数,fill与memset函数的区别
    【tensorflow使用笔记一】:安装linux下tensorflow环境的问题
    leetcode 49 字母异位词分组
    leetcode 1014. 在 D 天内送达包裹的能力
    【C++进阶:STL常见性质3】
    【C++进阶:STL常见性质2】
    【C++进阶:STL常见性质】
    【C++进阶:移位运算符的用法】
    面向对象之静态方法
  • 原文地址:https://www.cnblogs.com/lijianming180/p/12262469.html
Copyright © 2011-2022 走看看