Time 模块包含了以下内置函数,既有时间处理相关的,也有转换时间格式的:
返回当前时间的时间戳(1970纪元后经过的浮点秒数)。
问题一:为什么是1970年呢?
因为在计算机中,「时间戳」一般是指 Unix 时间戳,即自从 Unix 纪元(格林威治时间 1970 年 1 月 1 日 00:00:00)到当前时间的秒数。
什么是时间戳呢?
不要被「戳」吓到了,就是一个表示当前时间的数字。
「时间戳」这个名字的来源于 Timestamp,为什么是stamp 邮戳呢?
看下图:
作者:Dion
链接:https://www.zhihu.com/question/20563825/answer/15492203
来源:知乎
后面有四位小数,表示可以精确到10微妙!
时间戳单位最适于做日期运算。但是1970年之前的日期就无法以此表示了。太遥远的日期也不行,UNIX和Windows只支持到2038年。
接收时间辍(1970纪元后经过的浮点秒数)并返回当地时间下的时间元组t(t.tm_isdst可取0或1,取决于当地当时是不是夏令时)
Time.localtime函数能够把一个秒数转成一个名为struct_time的类
接收时间辍(1970纪元后经过的浮点秒数)并返回格林威治天文时间下的时间元组t。注:t.tm_isdst始终为0
那么time.gmtime和time.localtime有什么区别呢?
传空的时候
传0的时候
具体的类后面再介绍!这里只做相关介绍!
下面是通过得到的信息
这些类成员解释如下:
接受时间元组并返回一个可读的形式为"TueJun 27 23:56:30 2017"(2017年6月27日 周二23时56分30秒)的24个字符的字符串。
下面所得到的时间,虽然比秒数获取的信息好一点,但是可读性并不高
下面是通过help获取的帮助信息
Asctime方法传进去一个时间元组(struct_time到底是一个类还是一个元组,我感觉python的帮助系统也有矛盾的地方),返回一个时间字符串。
接收秒数,返回时间字符串。
注意:time.ctime(0)为什么返回的不是00:00:00而是08:00:00,因为我们和英国时区差8个小时
接收以时间元组,并返回以可读字符串表示的当地时间,格式由fmt决定
格式化成:2017-06-28 14:10:58形式
格式化成:Wed Jun 28 14:15:47 2017形式
接受时间元组并返回时间辍(1970纪元后经过的浮点秒数)
比如,我们得到一个类似于’Web Jun 28 14:15:47 2017’的时间字符串,如果要把这个时间转为时间戳表示的秒数,就可以通过time.mktime方法和time.strptime方法。
根据fmt的格式把一个时间字符串解析为时间元组。
使用help(time.strptime)获取到的帮助信息
推迟调用线程的运行,secs指秒数
返回本地实际和格林威治时间相差的秒数,如果该地区在格林威治东部会返回负值(如西欧,包括英国)。对夏令时启用地区才能使用。
因为我们与格林威治时间相差8个小时,8小时刚好就是28800秒,即我们比英国造8个小时!
http://blog.csdn.net/wind19/article/details/50233035
Python time tzset() 根据环境变量TZ重新初始化时间。
我们经常看到北京时间是GMT+8,有时候也叫UTC+8
那么什么是GMT,什么是UTC
GMT(Greenwish Mean Time 格林威治平时),这是UTC的民间名称。GMT=UTC。
UTC(Universal Time Coordinate 协调世界时)是基于原子时钟的时间。什么是原子时钟?个人认为就是一个很小的,长度固定的,不可再分的时间段。所以UTC的时间是均匀的。为了能够尽量减小和UT时间的误差,UTC引入了闰秒(在某些年份的最后一分钟是61秒),以确保UTC是UT1之间的误差在0.9秒之内。若大于0.9秒则由位于巴黎的国际地球自转事务中央局发布闰秒,使UTC与地球自转周期一致。
EST时间和EDT时间
相信不少人对于美国的时间的感觉都比较混乱吧?什么东部时间西部时间 太平洋时间,山地时间,夏令时等等.
EDT(Eastern DaylightTiming)指美国东部夏令时间。东部时区慢北京时间12小时。
EST eastern standard time (美国)东部标准时间 慢北京时间 13个小时。
http://www.12sign.cn/htmls/help/worldtimezone.htm
AEDT(AustralianEastern Daylight Time)澳大利亚东部夏令时, 时间是GMT+11即比格林威治时间快11小时(也即比北京快3小时)
AEST(Australian Eastern Stand Time)澳大利亚东部标准时间,时间是GMT+10即比格林威治时间快10小时(也即比北京时间快2小时)
属性time.tzname包含一对根据情况的不同而不同的字符串,分别是带夏令时的本地时区名称,和不带的。
属性time.timezone是当地时区(未启动夏令时)距离格林威治的偏移秒数(>0,美洲;<=0大部分欧洲,亚洲,非洲)。
python中时间日期格式化符号:
%y 两位数的年份表示(00-99) %Y 四位数的年份表示(000-9999) |
%H 24小时制小时数(0-23) %I 12小时制小时数(01-12) |
%j 年内的一天(001-366) |
|
%S 秒(00-59) |
|||
%m 月份(01-12) %M 分钟数(00=59) |
%a 本地简化星期名称 %A 本地完整星期名称 |
%p 本地A.M.或P.M.的等价符 |
|
%Z 当前时区的名称 |
%b 本地简化的月份名称 %B 本地完整的月份名称 |
||
%d 月内中的一天(0-31) |
|||
%c 本地相应的日期表示和时间表示 %x 本地相应的日期表示 %X 本地相应的时间表示 |
%w 星期(0-6),星期天为星期的开始 %% %号本身 |
关于时区的详解
http://blog.csdn.net/wb96a1007/article/details/7945021
28.3 日历calendar
返回某一年(由year指定),某一月(由month指定)的日历,并以格式化字符串的形式输出,形如:
输出格式有以下特点:
实验如下:
注意:直接输出calendar.month返回的对象,是以字符串的形式输出。是数据在计算机内存中本来存放的形式。
而当我们用print函数输出calendar.month的返回对象的时候,因为有print函数的作用,输出的格式以方便用户为目的,直观好看。
这个特点,跟str和repr函数很相似。
问题:w,l参数怎么设置呢?
下面是python 2.7 中输入help(calendar.month)的帮助信息
w默认为2,当设置为0,1的时候不生效
l默认为1,当设置为0的时候无效。
闰年的计算方法
闰年的条件是:
一:能被4整除,但不能被100整除的年份(例如2008是闰年,1900不是闰年)
二:能被400整除的年份(例如2000年)也是闰年。
闰年的原因
http://jingyan.baidu.com/article/e5c39bf563eaaf39d7603380.html
返回某一年(由year指定)的日历,三个月为一行,并以格式化字符串的形式输出,w表示每日的间隔宽度,l表示有效行数,c表示每个月之间的间距
28.3.4 以列表形式输出某年某月的日历calendar.monthcalendar(year,month)
以列表的形式返回某年某月的日历
Calendar.month.calendar的返回值是一个嵌套的列表,就是列表中的成员是一列表,每个成员是一周的日期,
当月以外的日子以0表示,嵌套的列表,每周为一个单位。
在windows中,python 3.6是可以的
设置星期几作为一个星期的第一天,周一是0,周日是6.