1. Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间。
2. 时间间隔是以秒为单位的浮点小数。
3. 每个时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示。时间戳单位最适于做日期运算。但是1970年之前的日期就无法以此表示了。太遥远的日期也不行,UNIX和Windows只支持到2038年。
4. Python 的 time 模块下有很多函数可以转换常见日期格式。如函数time.time()用于获取当前时间戳, eg:
#!/usr/bin/python # -*- coding: UTF- -*- import time; # 引入time模块 ticks = time.time() print "当前时间戳为:", ticks 以上实例输出结果: 当前时间戳为: 1459994552.51
5. 时间元组(struct_time元组),属性:
6. 实用:时间格式<-->时间戳
(1)获取当前时间--只要将浮点数传递给 localtime 之类的函数,即从返回浮点数的时间辍方式转成 时间元组,eg:
获取本地时间(时间元组格式):localtime = time.localtime(time.time()) ---
结果: time.struct_time(tm_year=2016, tm_mon=4, tm_mday=7, tm_hour=10, tm_min=3, tm_sec=27, tm_wday=3, tm_yday=98, tm_isdst=0)
(2)获取格式化的时间:你可以根据需求选取各种格式。
(3)格式化/转换日期:我们可以使用 time 模块的 strftime 方法来格式化日期:time.strftime(format[, t]),eg:
#!/usr/bin/python # -*- coding: UTF- -*-
# 格式化 eg1:格式化成 2016-04-07 10:25:09
eg2: import time
a = "2013-10-10 23:40:00"
print int(time.mktime(time.strptime(a,# 将 时间戳 转换为 指定格式日期:
eg1: import time
timeStamp = 1381419600
print time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(timeStamp)) # 结果:"2013-10-10 23:40:00"
eg2: import datetime
timeStamp = 1381419600
dateArray = datetime.datetime.utcfromtimestamp(timeStamp)
print dateArray.strftime("%Y-%m-%d %H:%M:%S") # 结果:"2013-10-10 23:40:00"
# 字符串格式更改:如 a =
"2013-10-10 23:40:00"
, 想改为 a =
"2013/10/10 23:40:00"
eg: import time
a ="2013-10-10 23:40:00"
print time.strftime("%Y/%m/%d %H:%M:%S", time.strptime(a, "%Y-%m-%d %H:%M:%S")); # 结果:"2013/10/10 23:40:00"
# 获取 当前时间 并转换为 指定日期格式:
eg1: import time
now = int(time.time()) # 获得当前时间时间戳
timeArray = time.localtime(now)
print time.strftime("%Y-%m-%d %H:%M:%S", timeArray) # 结果:"2013-10-10 23:40:00"
eg2: import datetime
now = datetime.datetime.now() # 获得时间数组格式
print now.strftime("%Y/%m/%d %H:%M:%S") # 结果:"2013/10/10 23:40:00"
# 获取 3天前的时间:datetime.timedelta([days, hours, seconds, microseconds = ..])
eg:import time
import datetime
threeDayAgo = (datetime.datetime.now() - datetime.timedelta(days = 3)) # 线获得时间数组格式的日期
# timeStamp = int(time.mktime(threeDayAgo.timetuple())) # 转换为时间戳
print threeDayAgo.strftime("%Y-%m-%d %H:%M:%S") # 结果:"2013-10-10 23:40:00"
# 注:timedelta()的参数有:days,hours,seconds,microseconds
# 给定时间戳,计算该时间的几天前时间:
eg:timeStamp = 1381419600
import datetime
import time
dateArray = datetime.datetime.utcfromtimestamp(timeStamp)
print (dateArray - datetime.timedelta(days = 3)) # 结果:"2013-10-07 15:40:00"
此外:python中时间日期格式化符号:
%y 两位数的年份表示(-) %Y 四位数的年份表示(-) %m 月份(-) %d 月内中的一天(-) %H 24小时制小时数(-) %I 12小时制小时数(-) %M 分钟数(=) %S 秒(-) %a 本地简化星期名称 %A 本地完整星期名称 %b 本地简化的月份名称 %B 本地完整的月份名称 %c 本地相应的日期表示和时间表示 %j 年内的一天(-) %p 本地A.M.或P.M.的等价符 %U 一年中的星期数(-)星期天为星期的开始 %w 星期(-),星期天为星期的开始 %W 一年中的星期数(-)星期一为星期的开始 %x 本地相应的日期表示 %X 本地相应的时间表示 %Z 当前时区的名称 %% %号本身
(4) 获取某月日历:Calendar 模块有很广泛的方法用来处理年历和月历,eg:打印某月的月历
#!/usr/bin/python # -*- coding: UTF- -*- import calendar cal = calendar.month(, ) print "以下输出2016年1月份的日历:" print cal; 以上实例输出结果: 以下输出2016年1月份的日历: January Mo Tu We Th Fr Sa Su
7 Time 模块/日历(Calender)模块
7.1 Time 模块:包含了以下内置函数,既有时间处理相的,也有转换时间格式的:
7.2 日历(Calender)模块:此模块的函数都是日历相关的,例如打印某月的字符月历。
星期一是默认的每周第一天,星期天是默认的最后一天。更改设置需调用calendar.setfirstweekday()函数。模块包含了以下内置函数:
其他相关模块和函数
在Python中,其他处理日期和时间的模块还有: