python中的时间模块
(1)time模块
1.获取时间戳(time方法)
time.time():返回从 1970 年 1 月 1 日午夜(历元)到现在的秒数
import timeif __name__ == "__main__":ticks = time.time()print(ticks) # 1687943966.2764587
2.获取时间元组(localtime方法)
time.localtime():返回一个时间元组(包含9个整数成员的对象):
- tm_year 年 如2000,2022等
- tm_mon 月 范围1~12
- tm_mday 日 范围1~31
- tm_hour 小时 范围0~23
- tm_min 分钟 范围0~59
- tm_sec 秒 0~61 (60~61 是闰秒) 秒的取值范围为0~61,考虑到闰一秒或闰两秒的情形。
- tm_wday 星期 范围0~6 (0表示周一)
- tm_yday 儒略日 1到366
- tm_isdst 夏令时 0、1或-1
- time.localtime():返回当前时间的时间元组
- time.localtime(时间戳):返回特定时间的时间元组
import timeif __name__ == "__main__":localtime1 = time.localtime()print(localtime1) print(localtime1.tm_year)# 2023print(localtime1.tm_hour)# 17ticks = time.time() + 60*60localtime2 = time.localtime(ticks) print(localtime2)print(localtime2.tm_year)# 2023print(localtime2.tm_hour)# 18
3.格式化时间(asctime方法、ctime()方法)
import timeformat_time = time.asctime(time.localtime())
print(format_time) # ed Jun 28 17:31:58 2023
此处也可直接使用asctime(),因为asctime()的缺省值为localtime()返回的当前时间。
亦可使用 ctime() , ctime() 等价于 asctime(localtime())。
4.自定义格式化时间(strftime 方法)
我们可以使用 time 模块的 strftime 方法来格式化日期:time.strftime(format[, t]),第一个参数是格式化字符串,第二个参数是时间元组。
import timeprint(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
# 2023-06-28 17:33:25print(time.strftime("%a %b %d %H:%M:%S %Y", time.localtime()))
# Wed Jun 28 17:33:25 2023
格式化符号 含意
%a 本地化的缩写星期中每日的名称。
%A 本地化的星期中每日的完整名称。
%b 本地化的月缩写名称。
%B 本地化的月完整名称。
%c 本地化的适当日期和时间表示。
%d 十进制数 [01,31] 表示的月中日。
%H 十进制数 [00,23] 表示的小时(24小时制)。
%I 十进制数 [01,12] 表示的小时(12小时制)。
%j 十进制数 [001,366] 表示的年中日。
%m 十进制数 [01,12] 表示的月。
%M 十进制数 [00,59] 表示的分钟。
%p 本地化的 AM 或 PM 。
%S 十进制数 [00,61] 表示的秒。
%U 十进制数 [00,53] 表示的一年中的周数(星期日作为一周的第一天)。 在第一个星期日之前的新年中的所有日子都被认为是在第 0 周。
%w 十进制数 [0(星期日),6] 表示的周中日。
%W 十进制数 [00,53] 表示的一年中的周数(星期一作为一周的第一天)。 在第一个星期一之前的新年中的所有日子被认为是在第 0 周。
%x 本地化的适当日期表示。
%X 本地化的适当时间表示。
%y 十进制数 [00,99] 表示的没有世纪的年份。
%Y 十进制数表示的带世纪的年份。
%z 十进制带符号数[-1200,+1200]表示时区。
%Z 时区名称。
%% 字面的 ‘%’ 字符。
5.其它函数
- gmtime([secs]) 将秒转换为UTC时间的时间元组
- mktime(t) 将时间元组转换为当地时间
- sleep(n) 休眠n秒
(2)datetime 和 dateutil 模块
1.查看datetime模块的所有属性和方法
from datetime import datetime# 查看所有属性和方法
print(dir(datetime))
for item in dir(datetime):print(item)
2.用datetime 和 dateutil处理时间
获取当前时间
from datetime import datetime
from dateutil import parser# 获取当前时间
nowtime = datetime.now()
print(type(nowtime)) # <class 'datetime.datetime'>
print(nowtime)
创建特定日期的时间
# datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]])
date = datetime(year=2018, month=12, day=16)
print(type(date)) # <class 'datetime.datetime'>
print(date) # 2018-12-16 00:00:00
两个时间之间相减可得到deltatime
time1=datetime(year=2018, month=12, day=16, hour=1, minute=0, second=0)
time2=datetime(year=2018, month=12, day=16, hour=1, minute=30, second=0)
print(time2-time1)
time3 = datetime.now()+(time2-time1)
print(time3)
获取datetime.datetime的一些属性
print(date.year)
print(date.month)
print(date.day)
print(date.hour)
print(date.minute)
print(date.second)
获取某个日期的weekday,返回0-6:0是星期一,6是星期天
print(datetime.weekday(date))
将特定时间字符串转化为datetime.datetime
date = parser.parse("16th of December, 2018")
print(type(date)) # <class 'datetime.datetime'>
print(date) # 2018-12-16 00:00:00date = parser.parse("2018-09-09")
print(type(date)) # <class 'datetime.datetime'>
print(date) # 2018-09-09 00:00:00date = parser.parse("2018-12-16 00:00:00")
print(type(date)) # <class 'datetime.datetime'>
print(date) # 2018-12-16 00:00:00对于"2018-12-16"还可以这样创建datetime.datetime
timestr = "2018-12-16"
date = datetime(year=int(timestr[:4]), month=int(timestr[5:7]), day=int(timestr[-2:]))
print(type(date)) # <class 'datetime.datetime'>
print(date) # 2018-12-16 00:00:00
将datetime.datetime转化为指定格式的时间字符串
date = datetime(year=2018, month=12, day=16)
print(date.strftime('%A')) # Sunday
print(date.strftime('%Y-%m-%d')) # 2018-12-16
print(date.strftime('%Y#%m#%d')) # 2018#12#16
print(date.strftime('%Y-%m-%d %X')) # 2018-12-16 00:00:00
不同时间格式的含义
- %a 本地简化星期几名称
- %A 本地完整星期几名称
- %b 本地简化月份名称
- %B 本地完整月份名称
- %c 本地相应的日期和时间表示
- %H 一天中的第几个小时(00-23)
- %d 一个月中第几天(01-31)
- %I 第几个小时(12 小时制,01-12)
- %j 一年中的第几天(001-366)
- %M 分钟数(00-59)
- %m 月份(01-12)
- %S 秒(01-61)(闰年秒占两个)
- %p 本地 am 或者 pm 的相应符,和%I 配合使用才用效果。
- %U 一年中的星期数(00-53)。星期天是一个星期的开始,第一个星期天之前的所有天数都放在第 0 周。
- %w 一个星期中的第几天(0-6,0 是星期天)
- %W 和%U 基本相同,不同的是%W 以星期一为一个星期的开始。
- %x 本地相应日期
- %X 本地相应时间
- %y 去掉世纪的年份(00-99)
- %Y 完整的年份
- %% ‘%’字符
- %Z 时区的名字(如果不存在为空字符)
end