Python模块 - time,datetime,calendar
time 模块
time模块方法:
>>> import time >>> time.time() #时间戳 秒级别 1519212085.6211221 #从1970年到现在一共度过1519212085秒; >>> time.time()/3600/24/365 #48年 1970-2018年有这么多秒 1h=3600s 48.17390346104816 >>> time.localtime() #本地时间 time.struct_time(tm_year=2018, tm_mon=2, tm_mday=21, tm_hour=20, tm_min=8, tm_sec=33, tm_wday=2, tm_yday=52, tm_isdst=0) >>> time.localtime(2342342434) time.struct_time(tm_year=2044, tm_mon=3, tm_mday=23, tm_hour=18, tm_min=40, tm_sec=34, tm_wday=2, tm_yday=83, tm_isdst=0) >>> a=time.localtime() >>> a time.struct_time(tm_year=2018, tm_mon=2, tm_mday=21, tm_hour=19, tm_min=28, tm_sec=45, tm_wday=2, tm_yday=52, tm_isdst=0) >>> '%s-%s-%d'%(a.tm_year,a.tm_mon,a.tm_mday) '2018-2-21' >>> time.mktime(a) #把localtime()时间反转时间成时间戳 1519214861.0
0 tm_year #年 1970-2018 1 tm_mon #月 1-12 2 tm_mday #日 1-31 3 tm_hour #时 0-23 4 tm_min #分 0-59 5 tm_sec #秒 0-59 6 tm_wday #一周中得第几天 0-6 7 tm_yday #一年中得第几天 0-365 8 tm_isdst #是否是夏令时 0-1
>>> time.gmtime() #比北京时间晚8点 UTC时区(0时区) time.struct_time(tm_year=2018, tm_mon=2, tm_mday=21, tm_hour=11, tm_min=50, tm_sec=46, tm_wday=2, tm_yday=52, tm_isdst=0) >>> time.sleep(2) #睡一会 单位为 秒 >>> time.asctime() #表示时间得另外一种方法 'Wed Feb 21 20:53:43 2018' >>> time.ctime() #表示时间得另外一种方法 'Wed Feb 21 20:57:16 2018' >>> time.ctime(3123) 'Thu Jan 1 08:52:03 1970' >>> time.ctime(0) 'Thu Jan 1 08:00:00 1970' >>> time.strftime('%Y-%m-%d %H:%M:%S') #表示时间 字符串 '2018-02-21 21:04:48' >>> a=time.localtime(2432423423) >>> a time.struct_time(tm_year=2047, tm_mon=1, tm_mday=30, tm_hour=9, tm_min=10, tm_sec=23, tm_wday=2, tm_yday=30, tm_isdst=0) >>> time.strftime('%Y-%m-%d %H:%M:%S',a) #表示某一时间戳得 字符串 '2047-01-30 09:10:23' >>> time.strftime('%Y-%m-%d %H:%M:%S %a',a) #a 周几 '2047-01-30 09:10:23 Wed' >>> time.strftime('%Y-%m-%d %H:%M:%S %A',a) #A 周几 '2047-01-30 09:10:23 Wednesday' >>> time.strftime('%y-%m-%d %H:%M:%S %b') #b 月 '18-02-21 21:22:19 Feb' >>> time.strftime('%y-%m-%d %H:%M:%S %B') #B 月 '18-02-21 21:22:29 February' >>> time.strftime('%Y-%m-%d %H:%M:%S %p',a) #p 上午下午 '2047-01-30 09:10:23 AM' >>> time.strftime('%Y-%m-%d %H:%M:%S %U') #U 一年得第几周 '2018-02-21 21:08:15 07' >>> time.strftime('%Y-%m-%d %H:%M:%S %w') #w 一周得第几天 '2018-02-21 21:09:55 3' >>> time.strftime('%y-%m-%d %H:%M:%S %z') #z 东8区时间 '18-02-21 21:10:38 +0800' >> time.strftime('%Y-%m-%d %H:%M:%S %Z') #Z 时间标准 '2018-02-21 21:28:22 中国标准时间' >>> s=time.strftime('%Y-%m-%d %H:%M:%S') #时间字符串 格式 时间戳来回转换 >>> s '2018-02-21 21:32:19' >>> s2= time.strptime(s,'%Y-%m-%d %H:%M:%S') >>> s2 time.struct_time(tm_year=2018, tm_mon=2, tm_mday=21, tm_hour=21, tm_min=32, tm_sec=19, tm_wday=2, tm_yday=52, tm_isdst=-1) >>> time.mktime(s2) 1519219939.0
字符串转时间格式对应表 Meaning Notes %a Locale’s abbreviated weekday name. %A Locale’s full weekday name. %b Locale’s abbreviated month name. %B Locale’s full month name. %c Locale’s appropriate date and time representation. %d Day of the month as a decimal number [01,31]. %H Hour (24-hour clock) as a decimal number [00,23]. %I Hour (12-hour clock) as a decimal number [01,12]. %j Day of the year as a decimal number [001,366]. %m Month as a decimal number [01,12]. %M Minute as a decimal number [00,59]. %p Locale’s equivalent of either AM or PM. (1) %S Second as a decimal number [00,61]. (2) %U Week number of the year (Sunday as the first day of the week) as a decimal number [00,53]. All days in a new year preceding the first Sunday are considered to be in week 0. (3) %w Weekday as a decimal number [0(Sunday),6]. %W Week number of the year (Monday as the first day of the week) as a decimal number [00,53]. All days in a new year preceding the first Monday are considered to be in week 0. (3) %x Locale’s appropriate date representation. %X Locale’s appropriate time representation. %y Year without century as a decimal number [00,99]. %Y Year with century as a decimal number. %z Time zone offset indicating a positive or negative time difference from UTC/GMT of the form +HHMM or -HHMM, where H represents decimal hour digits and M represents decimal minute digits [-23:59, +23:59]. %Z Time zone name (no characters if no time zone exists). %% A literal '%' character.
--------------------------------------
总结:time模块
1.time.time()
2.time.localtime()
3.time.localtime(2342342434)
4.time.mktime(a)
5.time.gmtime()
6.time.sleep(2)
7.time.asctime()
8.time.ctime()
9.time.ctime(3123)
10.time.strftime('%Y-%m-%d %H:%M:%S')
11.time.strftime('%Y-%m-%d %H:%M:%S',a)
12.time.strftime('%Y-%m-%d %H:%M:%S %A',a)
13.time.strptime(s,'%Y-%m-%d %H:%M:%S')
-----------------------------------------------------------
datetime模块
相比于time模块 datetime模块得接口更直观更容易调用 重点是进行时间运算
方法: >>> a=datetime.datetime.now() >>> a datetime.datetime(2018, 2, 21, 21, 59, 57, 526811) >>> a.year 2018 >>> a.timetuple() time.struct_time(tm_year=2018, tm_mon=2, tm_mday=21, tm_hour=21, tm_min=59, tm_sec=57, tm_wday=2, tm_yday=52, tm_isdst=-1) >>> d2=datetime.date.fromtimestamp(time.time()) #根据时间戳快速拿到年月日 >>> d2 datetime.date(2018, 2, 21) >>> d2.timetuple() #注意 时分秒 丢了 time.struct_time(tm_year=2018, tm_mon=2, tm_mday=21, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=52, tm_isdst=-1) 时间运算: >>> datetime.datetime.now()-datetime.timedelta(days=1) datetime.datetime(2018, 2, 20, 22, 13, 4, 891830) >>> datetime.datetime.now()-datetime.timedelta(days=3) datetime.datetime(2018, 2, 18, 22, 14, 7, 771268) >>> datetime.datetime.now()-datetime.timedelta(hours=3) datetime.datetime(2018, 2, 21, 19, 14, 33, 758609) >>> datetime.datetime.now()+datetime.timedelta(hours=3) datetime.datetime(2018, 2, 22, 1, 14, 48, 426850) >>> datetime.datetime.now()+datetime.timedelta(minutes=10) datetime.datetime(2018, 2, 21, 22, 25, 32, 615892) >>> datetime.datetime.now()+datetime.timedelta(seconds=10) datetime.datetime(2018, 2, 21, 22, 16, 29, 661140) 时间替换: >>> s=datetime.datetime.now() >>> s datetime.datetime(2018, 2, 21, 22, 21, 34, 62949) >>> s.replace(year=2016) datetime.datetime(2016, 2, 21, 22, 21, 34, 62949) >>> s.replace(year=2016,month=8) datetime.datetime(2016, 8, 21, 22, 21, 34, 62949) >>> s.replace(year=2016,month=8,day=2) datetime.datetime(2016, 8, 2, 22, 21, 34, 62949)
calendar是一个定义了一个日历类,,封装了一个月或年的日期和星期,另外,也可以展示文本日历和HTML日历的格式输出
import calendar c = calendar.TextCalendar(calendar.SUNDAY) c.prmonth(2016, 1) January 2016 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
c = calendar.HTMLCalendar(calendar.SUNDAY) print(c.formatmonth(2016, 1))
运行结果
<table border="0" cellpadding="0" cellspacing="0" class="month"> <tr><th colspan="7" class="month">January 2016</th></tr> <tr><th class="sun">Sun</th><th class="mon">Mon</th><th class="tue">Tue</th><th class="wed">Wed</th><th class="thu">Thu</th><th class="fri">Fri</th><th class="sat">Sat</th></tr> <tr><td class="noday"> </td><td class="noday"> </td><td class="noday"> </td><td class="noday"> </td><td class="noday"> </td><td class="fri">1</td><td class="sat">2</td></tr> <tr><td class="sun">3</td><td class="mon">4</td><td class="tue">5</td><td class="wed">6</td><td class="thu">7</td><td class="fri">8</td><td class="sat">9</td></tr> <tr><td class="sun">10</td><td class="mon">11</td><td class="tue">12</td><td class="wed">13</td><td class="thu">14</td><td class="fri">15</td><td class="sat">16</td></tr> <tr><td class="sun">17</td><td class="mon">18</td><td class="tue">19</td><td class="wed">20</td><td class="thu">21</td><td class="fri">22</td><td class="sat">23</td></tr> <tr><td class="sun">24</td><td class="mon">25</td><td class="tue">26</td><td class="wed">27</td><td class="thu">28</td><td class="fri">29</td><td class="sat">30</td></tr> <tr><td class="sun">31</td><td class="noday"> </td><td class="noday"> </td><td class="noday"> </td><td class="noday"> </td><td class="noday"> </td><td class="noday"> </td></tr> </table>
总结:
1.方法:a=datetime.datetime.now() a.year a.timetuple() d2=datetime.date.fromtimestamp(time.time())
2.时间运算:datetime.datetime.now()-datetime.timedelta(days=3)
3.时间替换:s=datetime.datetime.now() s.replace(year=2016,month=8)
import time print(time.time()) #用于计算 print(time.localtime(time.time())) print(time.gmtime(time.time()+28800)) print(time.mktime(time.localtime())) #格式化-->时间戳 print(time.strftime('%Y-%m-%d %X',time.localtime())) #格式化--》字符串时间 print(time.strftime('%F %X',time.localtime())) print(time.strptime('2017-01-03 09:37:06','%Y-%m-%d %X')) #字符串--》格式化 print(time.ctime())
E:\Python35\python.exe E:/time复习.py 1523599614.114538 time.struct_time(tm_year=2018, tm_mon=4, tm_mday=13, tm_hour=14, tm_min=6, tm_sec=54, tm_wday=4, tm_yday=103, tm_isdst=0) time.struct_time(tm_year=2018, tm_mon=4, tm_mday=13, tm_hour=14, tm_min=6, tm_sec=54, tm_wday=4, tm_yday=103, tm_isdst=0) 1523599614.0 2018-04-13 14:06:54 2018-04-13 14:06:54 time.struct_time(tm_year=2017, tm_mon=1, tm_mday=3, tm_hour=9, tm_min=37, tm_sec=6, tm_wday=1, tm_yday=3, tm_isdst=-1) Fri Apr 13 14:06:54 2018 Process finished with exit code 0