找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 9537|回复: 10

[代码与实例] 关于时间计算的小程序

7

主题

32

帖子

32

积分

贫民

积分
32
QQ
小鱼 发表于 2017-1-18 19:26:26 | 显示全部楼层 |阅读模式
刚学python没几天  大神勿喷  望指点一二

time.py

2.23 KB, 下载次数: 216

time计算

回复

使用道具 举报

0

主题

4

帖子

4

积分

贫民

积分
4
sunmengpro 发表于 2017-1-18 20:04:18 来自手机 | 显示全部楼层
多谢分享
回复

使用道具 举报

7

主题

32

帖子

32

积分

贫民

积分
32
QQ
小鱼  楼主| 发表于 2017-1-18 20:11:37 | 显示全部楼层

我是小白 还望指点一二
回复 支持 反对

使用道具 举报

7

主题

32

帖子

32

积分

贫民

积分
32
QQ
小鱼  楼主| 发表于 2017-1-18 22:23:25 | 显示全部楼层
  1. #coding = utf-8
  2. #求任意输入日期是星期几

  3. year = int(input("year:"))
  4. month = int(input("month:"))
  5. day = int(input("day:"))

  6. #检查年份范围为1900到2100
  7. checkinput = True
  8. if year < 1900 or year > 2100:
  9.     print("year must in 1900-2100")
  10.     checkinput=False
  11. #检查月份为1到12
  12. if month<1 or month>12:
  13.     print("month must in 1-12")
  14.     checkinput = False
  15. #检查日期,根据月和年进行判断
  16. #先根据月份取得该月的日期最大值
  17. maxday = 31
  18. if month == 2:
  19.     #判断是否为闰年
  20.     maxday = 28
  21.     if year%4==0 and not (year%100==0 and year%400!=0):
  22.         maxday = 29
  23. elif month == 4 or month == 6 or month ==9 or month == 11:
  24.     maxday = 30
  25. #检查日期范围为1到maxday
  26. if month<1 or month > maxday:
  27.     print("day must in 1-",maxday)
  28.     checkinput = False

  29. #只有所有检测是通过,才进行处理
  30. if checkinput:

  31.     #从1980年开始循环,计算到输入日期之间间隔多少天
  32.     #累计日期总数
  33.     daycount = 0
  34.     #年份
  35.     theyear = 1900
  36.     #月份
  37.     themonth = 1
  38.     #日期
  39.     theday = 1
  40.     #年份循环
  41.     while theyear<year:
  42.         adddays = 365
  43.         #如果是闰年咋加366天
  44.         if theyear%4==0 and not(theyear%100==0 and theyear%400!=0):
  45.             adddays = 366
  46.         daycount += adddays
  47.         #年份加1
  48.         theyear+=1

  49.     #年份循环到输入的年
  50.     #月份循环
  51.     while themonth < month:
  52.         adddays = 31
  53.         if themonth == 2:
  54.             #判断是否为闰年
  55.             adddays = 28
  56.             if year%4==0 and not (year%100==0 and year%400!=0):
  57.                 adddays = 29
  58.         elif themonth == 4 or themonth==6 or themonth==9 or themonth==11:
  59.             adddays=30
  60.         #日期累加31天或者28天或者30天
  61.         daycount+=adddays
  62.         #月份加1
  63.         themonth+=1

  64.     #年份和月份循环到输入的年和月
  65.     #日期相差
  66.     adddays=day-theday
  67.     #累计相差总天数
  68.     daycount+=adddays
  69.     print("daycount:",daycount)


  70.     #根据累计相差总天数加上偏移量,对7求余,然后加1
  71.     #1980年1月1日是星期一,偏移量为0
  72.     week = (daycount + 0) % 7 + 1
  73.     print("week",week)
  74. 这是源码  
复制代码
回复 支持 反对

使用道具 举报

0

主题

4

帖子

4

积分

贫民

积分
4
vvvzxs 发表于 2017-2-4 15:33:40 | 显示全部楼层
挺厉害的,几天就会编程
回复 支持 反对

使用道具 举报

0

主题

2

帖子

2

积分

贫民

积分
2
acd_lz_dc 发表于 2019-9-10 13:30:05 | 显示全部楼层
不错,楼主迅速就进入角色了,向你学习
回复 支持 反对

使用道具 举报

0

主题

1

帖子

1

积分

贫民

积分
1
xjshuaishuai 发表于 2019-12-29 00:16:35 | 显示全部楼层
谢谢分享!
回复

使用道具 举报

0

主题

1

帖子

1

积分

贫民

积分
1
youngski 发表于 2020-2-23 21:12:50 | 显示全部楼层
谢谢分享!
回复

使用道具 举报

1

主题

6

帖子

6

积分

贫民

积分
6
linsi 发表于 2020-2-26 17:03:36 | 显示全部楼层
代码逻辑有错误啊year < 1900 or year > 2100    不应该是 year>1900 or year <2100吗
回复 支持 反对

使用道具 举报

0

主题

3

帖子

3

积分

贫民

积分
3
zbnzbn 发表于 2020-3-20 22:50:38 | 显示全部楼层
可以 if 1900<year<2100:
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表