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>