欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

只用time模块,检查y年中有多少个星期w,并且返回所有符合日期

程序员文章站 2023-01-25 15:34:03
只用time模块实现查询y年中有几个星期w:说一下我的思路吧1.设置时间转时间戳的函数模块2.每天差246060个10位时间戳,使用for x in range(y年时间戳:y+1年的时间戳;每天的时间戳差)循环遍历每天3.检查循环的每一天是不是 需要的星期w 如果是,就把他转为年-月-日的格式,添加到待输出列表首先导入模块import time既然需要用户提供一个年份y:那么首先创建一个年份的1月1日转时间戳的代码如下def timep(year): """时间转实践...
只用time模块实现查询y年中有几个星期w:

说一下我的思路吧
1. 设置时间转时间戳的函数模块
2. 每天差246060个10位时间戳,使用for x in range(y年时间戳:y+1年的时间戳;每天的时间戳差)循环遍历每天
3. 检查循环的每一天是不是 需要的星期w 如果是,就把他转为年-月-日的格式,添加到待输出列表
首先导入模块

import time

既然需要用户提供一个年份y:
那么首先创建一个年份的1月1日转时间戳的
代码如下

def timep(year):
    """时间转实践戳"""

    td = str(year)+'-01-01'#创建一个年份+01月1日
    td = time.strptime(td, '%Y-%m-%d')#把上面创建好的格式,通过time.strptime()格式为元组
    td = time.mktime(td)#把上面的元组,通过time.mktime()格式为时间戳
    return td#返回时间戳

再创建一个时间戳转时间的模块,用于以后的输出

def timet(timep):
    """时间戳转时间"""
    timep = time.localtime(timep)#时间戳转为元组时间
    td = time.strftime('%Y-%m-%d', timep)#使用time.strftime()格式化日期
    return td#返回日期

我们需要一个判断当前时间是星期几的模块

def years(timep):
    """时间戳计算星期几"""
    timep = time.localtime(timep) # 时间戳转为元组时间
    return timep.tm_wday#返回星期几

好了,有了这三个模块,来写主模块吧

def jisuan(year_i, w):
    """主模块,year_1为年,w为需要检测的星期w"""
    year_i = int(year_i)  # 转换为整数,提高容错率
    w = int(w)  # 转换为整数,提高容错率
    week = []  # 创建空列表
    year = int(timep(year_i))  # 返回用户输入那年的时间戳,因为时间戳是浮点数,转为整数
    year1 = int(timep(year_i+1))  # 返回用户输入+1年的时间戳,因为时间戳是浮点数,转为整数
    for a in range(year, year1+1, 24*60*60):  # 循环每一天,year和year是个时间戳,给year1加一秒防止差一
        if years(a) == w:  # 判断是不是星期w
            week.append(timet(a))  # 添加的列表
    return {'年': year_i, '星期': w, '次数': len(week), '列表': week}  # 嗯,,就先返回为字典吧

剩下的代码,嗯,只需要调用主模块就好啦,需要注意的是星期日的w=0哦!!因为时间戳是1970年之后的,所以,只能查看1970以后的,太远的也不行.

if __name__ == "__main__":

    print(jisuan(input('请输入一个年份(1970-):'),input('星期几(0-6),0代表星期天:')))

完整代码:

import time

def timep(year):
    """时间转实践戳"""

    td = str(year)+'-01-01'  # 创建一个年份+01月1日
    td = time.strptime(td, '%Y-%m-%d')  # 把上面创建好的格式,通过time.strptime()格式为元组
    td = time.mktime(td)  # 把上面的元组,通过time.mktime()格式为时间戳
    return td  # 返回时间戳

def timet(timep):
    """时间戳转时间"""
    timep = time.localtime(timep)  # 时间戳转为元组时间
    td = time.strftime('%Y-%m-%d', timep)  # 使用time.strftime()格式化日期
    return td  # 返回日期

def years(timep):
    """时间戳计算星期几"""
    timep = time.localtime(timep)  # 时间戳转为元组时间
    return timep.tm_wday  # 返回星期几

def jisuan(year_i, w):
    """主模块,year_1为年,w为需要检测的星期w"""
    year_i = int(year_i)  # 转换为整数,提高容错率
    w = int(w)  # 转换为整数,提高容错率
    week = []  # 创建空列表
    year = int(timep(year_i))  # 返回用户输入那年的时间戳,因为时间戳是浮点数,转为整数
    year1 = int(timep(year_i+1))  # 返回用户输入+1年的时间戳,因为时间戳是浮点数,转为整数
    for a in range(year, year1+1, 24*60*60):  # 循环每一天,year和year是个时间戳,给year1加一秒防止差一
        if years(a) == w:  # 判断是不是星期w
            week.append(timet(a))  # 添加的列表
    return {'年': year_i, '星期': w, '次数': len(week), '列表': week}  # 嗯,,就先返回为字典吧

if __name__ == "__main__":

    print(jisuan(input('请输入一个年份(1970-):'), input('星期几(0-6),0代表星期天:')))

最后,如果帮助到了您,麻烦点下关注啦…

本文地址:https://blog.csdn.net/xrydrhlt66/article/details/107578844

相关标签: python