利用当前最流行的编程语言Python,来实现一个小案例,最终功能如下图展示:


代码为面向过程来写的,没作优化处理,可以利用Python封装继承多态的特性去进行优化,这里暂时不作展示。
详细代码和注释如下:
import timeinput_years = 0input_month = 0input_day = 0localtime = time.localtime(time.time())leap_years = Falsewhile True: try: input_years = int(input("输入年:")) input_month = int(input("输入月:")) input_day = int(input("输入日:")) except: print("请输入数字,谢谢!") continue if input_years < localtime[0]: print("请输入大于或等于当前年份") continue if input_month in [1, 3, 5, 7, 8, 10, 12]: if input_day > 31 or input_day < 1: print("大月31天") continue break elif input_month in [4, 6, 9, 11]: if input_day > 30 or input_day < 1: print("小月30天") continue break elif input_month == 2: if input_years % 100 == 0 and input_years % 400 == 0: if input_day > 29 or input_day < 1: print("闰年2月29天") continue break elif input_years % 4 == 0 and input_years % 100 != 0: if input_day > 29 or input_day < 1: print("闰年2月29天") continue break elif input_years % 3200 == 0 and input_years % 172800 == 0: if input_day > 29 or input_day < 1: print("闰年2月29天") continue break else: if input_day > 28 or input_day < 1: print("平年2月28天") continue break else: print("请输入1至12月,谢谢!") continuetm_year = localtime[0]tm_mon = localtime[1]tm_day = localtime[2]tm_hour = localtime[3]tm_min = localtime[4]tm_sec = localtime[5]tm_y_day = localtime[7]if input_years % 100 == 0 and input_years % 400 == 0: leap_years = Trueelif input_years % 4 == 0 and input_years % 100 != 0: leap_years = Trueelif input_years % 3200 == 0 and input_years % 172800 == 0: leap_years = Truea = 0# 计算输入的年里这一日是这一年的第多少天for i in range(1, input_month + 1): for j in range(1, 32): if input_month == i and input_day == j: a += 1 print(f"这是{input_years}年第{a}天") break a += 1 if i in [1, 3, 5, 7, 8, 10, 12]: if j >= 31: break elif i in [4, 6, 9, 11]: if j >= 30: break elif i == 2: if leap_years: if j >= 29: break else: if j >= 28: breakif input_years == tm_year: # 查询的年份距离当前年份是同一年 for d in range(a - tm_y_day - 1, -1, -1): Var_Hour = 23 - time.localtime(time.time())[3] Var_Min = 59 - time.localtime(time.time())[4] Var_Sec = 60 - time.localtime(time.time())[5] for i in range(Var_Hour, 0, -1): for j in range(Var_Min, 0, -1): for k in range(Var_Sec, 0, -1): print("r距离%d年%d月%d日还剩%d天%02d小时%02d分钟%02d秒" % (input_years, input_month, input_day, d, i, j, k), end="") time.sleep(1) if k == 1: Var_Sec = 60 breakelse: if input_years - tm_year == 1: # 查询的年份距离当前年份大于一整年 for d in range(365 - tm_y_day + a - 1 if leap_years else 366 - tm_y_day + a - 1, -1, -1): Var_Hour = 23 - time.localtime(time.time())[3] Var_Min = 59 - time.localtime(time.time())[4] Var_Sec = 60 - time.localtime(time.time())[5] for i in range(Var_Hour, 0, -1): for j in range(Var_Min, 0, -1): for k in range(Var_Sec, 0, -1): print("r距离%d年%d月%d日还剩%d天%02d小时%02d分钟%02d秒" % (input_years, input_month, input_day, d, i, j, k), end="") time.sleep(1) if k == 1: Var_Sec = 60 break else: var_y = tm_year + 1 y = -1 # 判断输入的年份至今年中间有多少个闰年,每个闰年加1天 while var_y <= input_years: if var_y % 100 == 0 and var_y % 400 == 0: y += 1 var_y += 1 elif var_y % 4 == 0 and var_y % 100 != 0: y += 1 var_y += 1 elif var_y % 3200 == 0 and var_y % 172800 == 0: y += 1 var_y += 1 var_y += 1 print(f"{input_years}至{tm_year + 1}年有{y + 1}个闰年") y = (input_years - tm_year - 1) * 365 + y for d in range(365 - tm_y_day + a + y - 1 if leap_years else 366 - tm_y_day + a + y - 1, -1, -1): Var_Hour = 23 - time.localtime(time.time())[3] Var_Min = 59 - time.localtime(time.time())[4] Var_Sec = 60 - time.localtime(time.time())[5] for i in range(Var_Hour, 0, -1): for j in range(Var_Min, 0, -1): for k in range(Var_Sec, 0, -1): print("r距离%d年%d月%d日还剩%d天%02d小时%02d分钟%02d秒" % (input_years, input_month, input_day, d, i, j, k), end="") time.sleep(1) if k == 1: Var_Sec = 60 break