时间的表示
1、时间不在Python Build-in类型,Python 提供 datetime、time 和 calendar 等模块用于时间类型的处理。
2、时间戳(timestamp),表示自从1970年1月1日(00:00:00 GMT)到现在经历的秒数。
3、datetime格式:2016-07-17 16:31:00
4、时间元组,Python中大部分函数使用元组处理时间,由9个字段构成:
序号 | 字段 | 属性 | 值 |
0 | tm_year | 年,4位数 | 2008 |
1 | tm_mon | 月 | 1 到 12 |
2 | tm_mday | 日 | 1 到 31 |
3 | tm_hour | 时 | 0 到 23 |
4 | tm_min | 分 | 0 到 59 |
5 | tm_sec | 秒 | 0 到 61 (60或61 是闰秒) |
6 | tm_wday | 一周的第几日 | 0到6 (0是周一) |
7 | tm_yday | 一年的第几日 | 一年中的第几天,1 到 366 |
8 | tm_isdst | 夏令时 | 是否为夏令时:1(夏令时)、0(不是夏令时)、-1(未知),默认 -1 |
获取时间
#获取系统时区
print (time.timezone)#获取当前时间戳
print ("timestamp:", time.time() )
timestamp: 1505619448.0100803#获取本地时间当前时间元组
#获取治天文时间下当前时间元组
print (time.localtime() )
time.struct_time(tm_year=2016, tm_mon=7, tm_mday=17, tm_hour=3, tm_min=37, tm_sec=28, tm_wday=6, tm_yday=260, tm_isdst=0)
print (gmtime = time.gmtime() )#获取当前时间datetime
print(datetime.datetime.now() )
2016-07-17 16:04:42.246403
时间格式转换
1、时间戳->时间元组:
2、时间元组->时间戳:#当地时间转换
lctime = time.localtime(time.time())
print ("localtime:",lctime)
localtime: time.struct_time(tm_year=2016, tm_mon=7, tm_mday=17, tm_hour=3, tm_min=37, tm_sec=28, tm_wday=6, tm_yday=260, tm_isdst=0)#格林威治天文时间转换
gmtime = time.gmtime(time.time())
print ("GM time:",gmtime)
#保留一位小数
print (“timestramp:”, time.mktime(lctime))
timestamp: 1505619448.0#不含小数
print (“timestramp:”, calendar.timegm(gmtime)
timestamp: 1505619448
3、时间戳 –> datetime
#当地时间转换
print(datetime.datetime.fromtimestamp(time.time()))
dt = datetime.datetime(2016,7,17,12,31)
print(dt.timestamp())#格林威治天文时间转换
print(datetime.datetime.utcfromtimestamp(time.time()))
4、datetime –> 时间戳
#以指定日期创建datetime
dt = datetime.datetime(2016,7,17,12,31)
print(dt.timestamp())
5、可读性时间字符串格式转换:
#时间元组格式化为可读形式
localtime: Sun Sep 17 03:37:28 2017
lctime = time.asctime( time.localtime([ts]) )
print ("localtime:",lctime)
#时间元组格式化为datetime形式
print (time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
2016-04-07 10:29:46
#datetime 格式化为可读形式
dt = dtat.time.datetime.now()
print(now.strftime('%a, %b %d %H:%M'))Wed, Mar
29
16
:
18
#字符串-> datetime
#字符串->时间元组->时间戳b =
"21/11/06 16:30"
print (datetime.datetime.strptime(b
,
"%d/%m/%y %H:%M"
))
2006-11-21 16:30:00
a = "Sat Mar 28 22:24:24 2016"
print (time.mktime(time.strptime(a,"%a %b %d %H:%M:%S %Y")))
1459175064.0
6、时间日期格式化符号:
- %y :两位数的年份表示(00-99)
- %Y :四位数的年份表示(000-9999)
- %m :月份(01-12)
- %d :月内中的一天(0-31)
- %H :24小时制小时数(0-23)
- %I :12小时制小时数(01-12)
- %M :分钟数(00=59)
- %S :秒(00-59)
- %a :本地简化星期名称
- %A :本地完整星期名称
- %b :本地简化的月份名称
- %B :本地完整的月份名称
- %c :本地相应的日期表示和时间表示
- %j :年内的一天(001-366)
- %p :本地A.M.或P.M.的等价符
- %U :一年中的星期数(00-53)星期天为星期的开始
- %w :星期(0-6),星期天为星期的开始
- %W :一年中的星期数(00-53)星期一为星期的开始
- %x :本地相应的日期表示
- %X :本地相应的时间表示
- %Z :当前时区的名称
- %% :%号本身
Calendar模块
1、Python默认周一为每周的第一天,可通过调用 calendar.setfirstweekday()函数进行修改:2、常用calendar函数列举#设置每周的起始日期,0(周一)到6(周日)
calendar.setfirstweekday(weekday)
#获取某月日历
print (calendar.month(2017, 7,w=2,l=1))July 2017#获取2017年全年日历
Mo Tu We Th Fr Sa Su
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
print (calendar.calendar(2017,w=2,l=1,c=6))#以列表形式输出某月日历
print (calendar.monthcalendar(2017, 7))
[[0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0]]#闰年判断,是返回True,否则为false
calendar.isleap(year)#返回给定日期周几,0(周一)到6(周日)
calendar.weekday(year,month,day)
Comments
Post a Comment