Python基础—日期与时间操作
FosterV16
8年前
<p>来自: <a href="/misc/goto?guid=4959670120912044357" rel="nofollow">http://wxmimperio.tk/2016/03/05/Python-date-time-ops/</a></p> <p>Python标准库中提供了datatime模块来操作日期和时间</p> <p><a href="/misc/goto?guid=4959670121002202561" rel="nofollow,noindex">Demo Github源码</a></p> <h2>环境及版本</h2> <pre> Windows 10 x64 Python 2.7 Pycharm 4.5.1 </pre> <h2>datetime.date</h2> <ul> <li> <p>表示日期的类,常用的属性有year, month, day</p> </li> <li> <p>year的范围是[1, 9999],month的范围是[1, 12],day的最大值根据给定的year, month参数来决定(区分闰年)</p> </li> </ul> <h2>常用的属性</h2> <pre> # 利用构造函数创建日期 now_time = date(2016, 1, 1) print now_time </pre> <ul> <li>date.max、date.min: 最大、最小日期</li> </ul> <pre> # 最大最小日期 print now_time.min, now_time.max </pre> <ul> <li>date.resolution: 表示日期的最小单位</li> </ul> <pre> # 表示日期的最小单位 print now_time.resolution </pre> <ul> <li>date.year,date.month,date.day: 取得年,月,日</li> </ul> <pre> # 取得年、月、日 print "year={0},month={1},day={2}".format(now_time.year, now_time.month, now_time.day) </pre> <h2>常用的类方法</h2> <ul> <li>date.today()</li> </ul> <pre> # 返回一个表示当前本地日期的date对象 print date.today() </pre> <ul> <li>date.fromtimestamp(timestamp)</li> </ul> <pre> # 根据给定的时间戮,返回一个date对象 timesstamp = 1451577600 print date.fromtimestamp(timesstamp) </pre> <ul> <li>date.replace(year, month, day)</li> </ul> <pre> # 生成一个新的日期对象 replace_date = now_time.replace(year=1990) print replace_date </pre> <ul> <li>date.timetuple()</li> </ul> <pre> # 返回日期对应的time.struct_time对象 print now_time.timetuple() </pre> <ul> <li>date.weekday()</li> </ul> <pre> # 返回weekday,如果是星期一,返回0,如果是星期2,返回1,以此类推. print now_time.weekday() </pre> <ul> <li>date.isocalendar()</li> </ul> <pre> # 返回格式如(year,month,day)的元组; print now_time.isocalendar() </pre> <ul> <li>date.isoformat()</li> </ul> <pre> # 返回格式如'%Y-%m-%d'的字符串 print now_time.isoformat() </pre> <ul> <li>date.strftime(fmt)</li> </ul> <pre> # 自定义格式化字符串 fmt = "%Y-%m-%d %H:%M:%S" print now_time.strftime(fmt) </pre> <ul> <li>两个日期运算</li> </ul> <pre> date_1 = date(1992, 1, 20) date_2 = date(2000, 5, 3) print "date_2 - date_1 = {0}".format(date_2 - date_1) </pre> <ul> <li>比较日期时返回True or False</li> </ul> <pre> if date_1 > date_2: print "date_1 > date_2" else: print "date_1 < date_2" </pre> <h2>datetime.time</h2> <ul> <li> <p>time类表示时间,由hour、minute、second、microsecond(时、分、秒以及微秒)组成</p> </li> <li> <p>hour的范围为[0, 24)、minute的范围为[0, 60)、second的范围为[0, 60)、microsecond的范围为[0, 1000000)</p> </li> </ul> <h2>常用的属性</h2> <pre> # 构造函数创建时间 now_time = time(10, 12, 13) print now_time </pre> <ul> <li>time.min、time.max</li> </ul> <pre> # 最小、最大时间 print now_time.min, now_time.max </pre> <ul> <li>time.resolution</li> </ul> <pre> # 时间的最小单位,微妙 print now_time.resolution </pre> <ul> <li>time.hour、time.minute、time.second、time.microsecond</li> </ul> <pre> # 时、分、秒、微秒 print now_time.hour, now_time.minute, now_time.second, now_time.microsecond </pre> <h2>常用方法</h2> <ul> <li>time.replace()</li> </ul> <pre> # 创建一个新的时间对象,用参数指定的时、分、秒、微秒代替原有对象中的属性 new_time = now_time.replace(hour=19,second=50) print new_time </pre> <ul> <li>time.isoformat()</li> </ul> <pre> # 返回型如"%H:%M:%S"格式的字符串表示 print now_time.isoformat() </pre> <ul> <li>time.strftime(fmt)</li> </ul> <pre> # 返回自定义格式化字符串。在下面详细介绍 fmt = "%H:%M:%S:%f" print now_time.strftime(fmt) </pre> <h2>datetime.datetime</h2> <ul> <li>datetime是date与time的结合体,包括date与time的所有信息</li> </ul> <h2>常用属性</h2> <pre> # 获取当前时间 now_datetime = datetime.now() print now_datetime </pre> <ul> <li>datetime.min、datetime.max</li> </ul> <pre> # 最小值与最大值 print now_datetime.min, now_datetime.max </pre> <ul> <li>datetime.resolution</li> </ul> <pre> # datetime最小单位 print now_datetime.resolution </pre> <ul> <li>datetime.year、month、day、hour、minute、second、microsecond、tzinfo</li> </ul> <pre> # 获取datetime的年、月、日、时、分、秒、时区 print now_datetime.year, now_datetime.month, now_datetime.day print now_datetime.hour, now_datetime.minute, now_datetime.second, now_datetime.microsecond print now_datetime.tzinfo </pre> <h2>常用方法</h2> <ul> <li>datetime.today()</li> </ul> <pre> # 返回一个表示当前本地时间的datetime对象 print now_datetime.today() </pre> <ul> <li>datetime.utcnow()</li> </ul> <pre> # 返回一个当前utc时间的datetime对象 print now_datetime.utcnow() </pre> <ul> <li>datetime.fromtimestamp(timestamp[, tz])</li> </ul> <pre> # 根据时间戮创建一个datetime对象,参数tz指定时区信息 timesstamp = 1451577600 print datetime.fromtimestamp(timesstamp) </pre> <ul> <li>datetime.utcfromtimestamp(timestamp)</li> </ul> <pre> # 根据时间戮创建一个datetime对象 print datetime.utcfromtimestamp(timesstamp) </pre> <ul> <li>datetime.combine(date, time)</li> </ul> <pre> # 根据date和time,创建一个datetime对象 new_date = date.today() new_time = time(12, 12, 12) print datetime.combine(new_date, new_time) </pre> <ul> <li>datetime.strptime(date_string, format)</li> </ul> <pre> # 将格式字符串转换为datetime对象 fmt = "%Y-%m-%d %H:%M:%S:%f" fmt_datetime = "2016-1-2 12:8:52:2569" print datetime.strptime(fmt_datetime, fmt) </pre> <ul> <li>datetime.strftime(format)</li> </ul> <pre> # 将datetime对象格式化成字符串 datetime_str = datetime.today().strftime("%Y-%m-%d %H:%M:%S:%f") print datetime_str </pre> <ul> <li>datetime.weekday()</li> </ul> <pre> # 获取星期 print datetime.today().weekday() </pre> <ul> <li>datetime.utctimetuple()</li> </ul> <pre> # 转换成UTC的元祖 print datetime.today().utctimetuple() </pre> <h2>格式化日期符号表</h2> <table> <thead> <tr> <th>符号</th> <th>意义</th> </tr> </thead> <tbody> <tr> <td>%y</td> <td>两位数的年份表示(00-99)</td> </tr> <tr> <td>%Y</td> <td>四位数的年份表示(000-9999)</td> </tr> <tr> <td>%m</td> <td>月份(01-12)</td> </tr> <tr> <td>%d</td> <td>月内中的一天(0-31)</td> </tr> <tr> <td>%H</td> <td>24小时制小时数(0-23)</td> </tr> <tr> <td>%I</td> <td>12小时制小时数(01-12)</td> </tr> <tr> <td>%M</td> <td>分钟数(00=59)</td> </tr> <tr> <td>%S</td> <td>秒(00-59)</td> </tr> <tr> <td>%a</td> <td>本地简化星期名称</td> </tr> <tr> <td>%A</td> <td>本地完整星期名称</td> </tr> <tr> <td>%b</td> <td>本地简化的月份名称</td> </tr> <tr> <td>%B</td> <td>本地完整的月份名称</td> </tr> <tr> <td>%c</td> <td>本地相应的日期表示和时间表示</td> </tr> <tr> <td>%j</td> <td>年内的一天(001-366)</td> </tr> <tr> <td>%p</td> <td>本地A.M.或P.M.的等价符</td> </tr> <tr> <td>%U</td> <td>一年中的星期数(00-53)星期天为星期的开始</td> </tr> <tr> <td>%w</td> <td>星期(0-6),星期天为星期的开始</td> </tr> <tr> <td>%W</td> <td>一年中的星期数(00-53)星期一为星期的开始</td> </tr> <tr> <td>%x</td> <td>本地相应的日期表示</td> </tr> <tr> <td>%X</td> <td>本地相应的时间表示</td> </tr> <tr> <td>%Z</td> <td>当前时区的名称</td> </tr> <tr> <td>%%</td> <td>%号本身</td> </tr> </tbody> </table> <p>参考:Python基础教程(第2版·修订版)</p> <p>转载请注明出处</p>