python日期操作
1. 日期输出格式化
所有日期、时间的api都在datetime模块内。
datetime => string
# strftime是datetime类的实例方法。 now = datetime.datetime.now() now.strftime('%Y-%m-%d %H:%M:%S') # 输出2012-03-05 16:26:23.870105
string => datetime
# strptime是datetime类的静态方法。 t_str = '2012-03-05 16:26:23' d = datetime.datetime.strptime(t_str, '%Y-%m-%d %H:%M:%S')
2. 日期比较操作
在datetime模块中有timedelta类,这个类的对象用于表示一个时间间隔,比如两个日期或者时间的差别。
# 构造方法: datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0) # 所有的参数都有默认值0,这些参数可以是int或float,正的或负的。 # 可以通过timedelta.days、tiemdelta.seconds等获取相应的时间值。
timedelta类的实例,支持加、减、乘、除等操作,所得的结果也是timedelta类的实例。比如:
year = timedelta(days=365) ten_years = year *10 nine_years = ten_years - year
同时,date、time和datetime类也支持与timedelta的加、减运算。
datetime1 = datetime2 +/- timedelta timedelta = datetime1 - datetime2
这样,可以很方便的实现一些功能。
#coding=utf-8 import datetime now=datetime.datetime.now() print now #将日期转化为字符串 datetime => string print now.strftime('%Y-%m-%d %H:%M:%S') t_str = '2012-03-05 16:26:23' #将字符串转换为日期 string => datetime d=datetime.datetime.strptime(t_str,'%Y-%m-%d %H:%M:%S') print d #在datetime模块中有timedelta类,这个类的对象用于表示一个时间间隔,比如两个日#期或者时间的差别。 #计算两个日期的间隔 d1 = datetime.datetime.strptime('2012-03-05 17:41:20', '%Y-%m-%d %H:%M:%S') d2 = datetime.datetime.strptime('2012-03-02 17:41:20', '%Y-%m-%d %H:%M:%S') delta = d1 - d2 print delta.days print delta #今天的n天后的日期。 now=datetime.datetime.now() delta=datetime.timedelta(days=3) n_days=now+delta print n_days.strftime('%Y-%m-%d %H:%M:%S')
获取当前时间
# 当前时间 now = datetime.datetime.now() # 当前时间凌晨 zeroToday = now - datetime.timedelta(hours=now.hour, minutes=now.minute, seconds=now.second,microseconds=now.microsecond) # 当天结束时间23:59:59 lastToday = zeroToday + datetime.timedelta(hours=23, minutes=59, seconds=59) ) # 前一天的当前时间 yesterdayNow = now - datetime.timedelta(hours=23, minutes=59, seconds=59) # 明天的当前时间 tomorrowNow = now + datetime.timedelta(hours=23, minutes=59, seconds=59) # 昨天当前时间 now = (datetime.datetime.now() - datetime.timedelta(days = 1)) # 昨天凌晨 zeroToday1 = now - datetime.timedelta(hours=now.hour, minutes=now.minute, seconds=now.second,microseconds=now.microsecond) # 昨天结束时间 lastToday1 = zeroToday1 + datetime.timedelta(hours=23, minutes=59, seconds=59)
3.获取当前时间是周几
datetime.datetime.isoweekday()返回的1-7代表周到周日(推荐使用);
date.weekday()返回的0-6代表周一到周日
4.Python获取时分秒
# 第一种方法的使用方式如下: 1、打开终端 2、输入:python 3、输入:import time 4、输入:time.localtime([可以放入时间戳]) 5、发现输出了一个struct_time结构 6、输入:time.localtime().tm_hour 7、获得了当前的小时值 8、获得其他值方法类似 # 第二种方法的使用方式如下: 1、打开终端 2、输入:python 3、输入:import datetime 4、输入:datetime.datetime.now().hour 5、获得当前小时数 6、获得其他值方法类似
5.Python常用函数time.strftime()简介
time.strftime()可以用来获得当前时间,可以将时间格式化为字符串等等
# 格式命令列在下面:(区分大小写) %a 星期几的简写 %A 星期几的全称 %b 月分的简写 %B 月份的全称 %c 标准的日期的时间串 %C 年份的后两位数字 %d 十进制表示的每月的第几天 %D 月/天/年 %e 在两字符域中,十进制表示的每月的第几天 %F 年-月-日 %g 年份的后两位数字,使用基于周的年 %G 年分,使用基于周的年 %h 简写的月份名 %H 24小时制的小时 %I 12小时制的小时 %j 十进制表示的每年的第几天 %m 十进制表示的月份 %M 十时制表示的分钟数 %n 新行符 %p 本地的AM或PM的等价显示 %r 12小时的时间 %R 显示小时和分钟:hh:mm %S 十进制的秒数 %t 水平制表符 %T 显示时分秒:hh:mm:ss %u 每周的第几天,星期一为第一天 (值从0到6,星期一为0) %U 第年的第几周,把星期日做为第一天(值从0到53) %V 每年的第几周,使用基于周的年 %w 十进制表示的星期几(值从0到6,星期天为0) %W 每年的第几周,把星期一做为第一天(值从0到53) %x 标准的日期串 %X 标准的时间串 %y 不带世纪的十进制年份(值从0到99) %Y 带世纪部分的十制年份 %z,%Z 时区名称,如果不能得到时区名称则返回空字符。 %% 百分号
实例
from datetime import datetime dt = datetime.now() print('时间:(%Y-%m-%d %H:%M:%S %f): ', dt.strftime('%Y-%m-%d %H:%M:%S %f')) print('时间:(%Y-%m-%d %H:%M:%S %p): ', dt.strftime('%y-%m-%d %I:%M:%S %p')) print('星期缩写%%a: %s ' % dt.strftime('%a')) print('星期全拼%%A: %s ' % dt.strftime('%A')) print('月份缩写%%b: %s ' % dt.strftime('%b')) print('月份全批%%B: %s ' % dt.strftime('%B')) print('日期时间%%c: %s ' % dt.strftime('%c')) print('今天是这周的第%s天 ' % dt.strftime('%w')) print('今天是今年的第%s天 ' % dt.strftime('%j')) print('今周是今年的第%s周 ' % dt.strftime('%U')) print('今天是当月的第%s天 ' % dt.strftime('%d'))