首页 > 代码库 > 【Time系列四】查询当月日历

【Time系列四】查询当月日历

荒废了两个星期没学java了,今天一心想突破"日历查询"这个小程序。无奈天资愚钝,想了一个上午。

最后卡在了日期排列的问题上,只好去参考下别人的代码。

 

从简单的开始,想想既然是查询日历。打开下手机,大体是这种模样。那么我们就按照这种格式,来

设计程序吧。

技术分享

首先,之前讲到的,用(%)求余符号求星期的。今天是10月30号—周日,那么如何求出若干天后是星

期几呢? 思路就是,我们把周日定为0,一天后的周一自然就是1,依此类推,周六就是六啦。那么13

天后,就是(0+13) % 7 = 5, 周五哦......

 1 # coding: utf-8
 2 
 3 print u"今天是周日!"
 4 query = raw_input(">>> ")
 5 
 6 weeks = {
 7     0: u"周日",
 8     1: u"周一",
 9     2: u"周二",
10     3: u"周三",
11     4: u"周四",
12     5: u"周五",
13     6: u"周六",
14 }
15 
16 print query + u"天后是" + weeks[(int(query) + 0) % 7] 

技术分享

------------------------------------------------------------------------------------------------------------------------------------------------------------

现在就利用之前做过的自动关机脚本的原理,以1970年1月1日午夜零点,也就是周四为基点。来算出从它

到现在总共过了多少秒,然后再转化为总共多少天,再算出若干天之后是星期几。

【注: 2016年10月31号是周一】

 1 # coding: utf-8
 2 
 3 import time
 4 import datetime
 5 #--------------------------------------------#
 6 # 把当前的时间转化为指定格式 "年/月/日 时:分:秒"   #
 7 # 把当前时间转化为datetime.datetime的类型       #
 8 # 得出从1970年元旦0点至今的总秒数                #
 9 # 再将总秒数转化为总天数                        #
10 #---------------------------------------------#
11 currTime = time.strftime("%Y/%m/%d %H:%M:%S")
12 dt = datetime.datetime.strptime(currTime, "%Y/%m/%d %H:%M:%S")
13 currSeconds = time.mktime(dt.timetuple())
14 currDays = currSeconds / (3600 * 24)
15 
16 weeks = {
17     0: u"周日",
18     1: u"周一",
19     2: u"周二",
20     3: u"周三",
21     4: u"周四",
22     5: u"周五",
23     6: u"周六"
24 }
25 
26 print weeks[int((currDays + 4) % 7)]

 技术分享

技术分享
 1 # coding: utf-8
 2 
 3 import time
 4 import datetime
 5 
 6 day = time.strftime("%d")
 7 
 8 #--------------------------------------------#
 9 # 当前时间                                   #
10 # 把当前时间转化为datetime.datetime对象      #
11 # 自1970年1月1日以来到今天总共过了多少秒     #
12 # 直至今天总共过了多少天                     #
13 # 直至当月的1号总共过了多少天                #
14 #--------------------------------------------#
15 currTime = time.strftime("%Y/%m/%d %H:%M:%S")
16 dt = datetime.datetime.strptime(currTime, "%Y/%m/%d %H:%M:%S")
17 totalSeconds = time.mktime(dt.timetuple())
18 totalDays = totalSeconds / (3600 * 24)
19 start_day = int(totalDays -int(day) + 1)
20 
21 weeks = {
22     0: u"周日",
23     1: u"周一",
24     2: u"周二",
25     3: u"周三",
26     4: u"周二",
27     5: u"周五",
28     6: u"周六"
29 }
30 
31 index = (4 + start_day) % 7
32 
33 print u"   < 2016年10月"
34 print u"   日   一   二   三   四   五   六"
35 
36 # print + 逗号会多一个空格
37 for i in range(1, 32):
38     if i == 1:
39         print " " * 5 * index + "   %d" % i,    
40     else:
41         print "%4d" % i,
42     if (4 + start_day + i - 1) % 7 == 6:
43         print
查询当月日历

技术分享

 

【Time系列四】查询当月日历