【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

查询当月日历

时间: 2025-01-07 15:56:45

【Time系列四】查询当月日历的相关文章

Java-单机版的书店管理系统(练习设计模块和思想_系列 四(2) )

说明: 本博客为补全上篇-Java-单机版的书店管理系统(练习设计模块和思想_系列 四(1) )的,所以如果不懂,请先看上一篇. 本系列都是我一步一步学习来的, 所以,可能比较适合初学设计模块的人来学. 现在补全我目前写的所以代码: 公共类: 用户类型枚举:UserTypeEnum类 package cn.hncu.bookStore.common; /** * 功能:用户类型的枚举!<br/> * 定义在公共模块.<br/> * 变量:<br/> * ADMIN(1,

ztree使用系列四(ztree实现同级拖拽排序并将排序结果保存数据库)

ztree这个系列的最后一篇,也是ztree功能强大的体现之一--排序功能.ztree可以实现所有节点之间随意的拖拽排序功能,我这里根据需要实现了只允许同级之间随意拖拽排序,其实原理都一样,只是范围缩小了一些,多了一些判断而已.下面是每一层的代码,还是采取只贴出功能代码,因为这个拖拽排序功能我感觉很不错,所以单独拿出一篇博客来展示,也方便理解. Jsp页面实现功能的js代码如下: //拖拽前执行 var dragId; function beforeDrag(treeId, treeNodes)

S5PV210开发系列四_uCGUI的移植

S5PV210开发系列四 uCGUI的移植 象棋小子          1048272975 GUI(图形用户界面)极大地方便了非专业用户的使用,用户无需记忆大量的命令,取而代之的是可以通过窗口.菜单.按键等方式进行操作.在某些场合,设计一款人机界面丰富友好的嵌入式产品能赢得更多的用户.笔者此处就S5PV210基于uCGUI图形用户界面的使用作一个简单的介绍. 1. uCGUI移植概述 1.1. S5PV210 Bootloader 笔者的S5PV210的Bootloader设置最高的CPU主频

Exchange Server 2013系列四:小企业邮件系统部署

Exchange Server 2013 SP1 系列四:小企业部署邮件服务器 杜飞 Exchange 服务器功能强大,不再只是一个邮件系统,还是一个复杂的消息传递平台,它通过相关组件协同工作以提供一个全面的解决方案,包括邮件传递.邮件访问.语音邮件.传真.联系人.日历等.今天咱们就看一下如何在小规模企业中部署Exchange Server2013 Sp1.一般小规模企业预算有限,本着经济实用的方针,会考虑多角色并存的部署方式,基本拓扑如下图所示: 硬件要求: 处理器:支持 Intel 64 位

Exchange 2013SP1和O365混合部署系列四

前面的三篇算是准备工作,今天我们看下如何在Exchange 2013 SP1中配置启用混合部署.老规矩,先看图,特别注意的我会,指出. 在EAC面板有个混合选项.点击启用.然后会登录到0365. 继续下一步. 继续下一步. 继续下一步. 远程迁移需要一张公网的证书. 继续下一步,需要输入凭据. 下面会自动开始配置. 混合部署到这里,算是配置完成. 组织里面多了本地到O365的通道. O365里面则相反的. 下篇我们将介绍本地新建O365账号和本地到O365的迁移. 先到这里. Exchange

ICMP拒绝服务攻击(原始套接字系列四)

拒绝服务攻击(DoS)企图通过使被攻击的计算机资源消耗殆尽从而不能再提供服务,拒绝服务攻击是最容易实施的攻击行为.中美黑客大战中的中国黑客一般对美进行的就是拒绝服务攻击,其技术手段大多不够高明. ICMP实现拒绝服务攻击的途径有二:一者"单刀直入",一者"借刀杀人".具体过程分析如下:   ICMPFLOOD攻击 大量的 ICMP消息发送给目标系统,使得它不能够对合法的服务请求做出响应.中美黑客大战中的多数中国黑客采用的正是此项技术.ICMP FLOOD攻击实际上是

Lync Server 2010 安装部署系列四:安装&配置证书服务器

1.打开"服务器管理器" 2.添加角色 3.单击下一步按钮 4.勾选"Active Directory证书服务" 5.单击"下一步"按钮: 6.勾选"证书颁发机构"和"证书颁发机构Web注册",单击"下一步"按钮: 7.勾选"企业",单击"下一步"按钮: 8.勾选"根CA",单击"下一步"按钮: 9.勾选&q

JS生成当月日历

JS生成当月日历,效果图 完整代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-e

sed修炼系列(四):sed中的疑难杂症

本文目录:1 sed中使用变量和变量替换的问题2 反向引用失效问题3 "-i"选项的文件保存问题4 贪婪匹配问题5 sed命令"a"和"N"的纠葛 1.sed中使用变量和变量替换的问题 在脚本中使用sed的时候,很可能需要在sed中引用shell变量,甚至想在sed命令行中使用变量替换.也许很多人都遇到过这个问题,但引号却死活调试不出正确的位置.其实这不是sed的问题,而是shell的特性.搞懂sed如何解决引号的问题,对理解shell引号问题有