1. 时间模块time
在python中,时间通常有下面几种表示形式:
1.时间戳
2.字符串时间
3.元组类型的时间
在使用方法前,导入time模块:
import time
1. 时间戳:时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。
time.time()
返回值:从1970年1月1日00:00:00开始到当前的秒数
返回值类型:float类型
print(time.time())
运行结果如下:
2. 字符串时间:即我们最常见到,也最熟悉的时间格式
time.asctime():把一个表示元组时间或者struct_time表示为这种固定形式:‘Sun Jun 20 23:21:05 1993’,如果没有参数,将会将time.localtime()作为参数传入。
返回值:固定形式的时间
返回值类型:字符串类型
print(time.asctime())
print(type(time.asctime()))
输出结果如下:
time.ctime():把一个时间戳转化为time.asctime()的形式,如果参数未给或者为None的时候,将会默认time.time()为参数。
print(time.ctime())
print(type(time.ctime()))
输出结果如下:
3. 元组时间(struct_time):
struct_time元组共有9个元素,下面列出这种方式元组中的几个元素:
索引(Index) | 属性(Attribute) | 值(Values) |
0 | tm_year(年) | 年份:比如2019 |
1 | tm_mon(月) | 1 - 12月 |
2 | tm_mday(日) | 1 - 31天 |
3 | tm_hour(时) | 0-24时 |
4 | tm_min(分) | 0 - 59 |
5 | tm_sec(秒) | 0 - 60 |
6 | tm_wday(weekday) | 0 - 6(0表示周日) |
7 | tm_yday(一年中的第几天) | 1 - 366 |
8 | tm_isdst(是否是夏令时) | 默认为-1 |
time.localtime():将一个时间戳转换为当前时区的元组时间,参数未提供,则以当前时间为准。
返回值:元组时间
返回值类型:time.struct_time
info = time.localtime()
print(info,type(info))
输出结果如下:
可以在元组时间中提取具体想要的值:
info = time.localtime()
print(info.tm_year)
print(info.tm_mon)
输出结果如下:
2. 常用时间的转换
1. 把元组时间转换为时间戳
time.mktime()
返回值:时间戳
返回值类型:float型
tuple_time = time.localtime()
time_now = time.mktime(tuple_time)
print(time_now, type(time_now))
输出结果:
2. 把元组时间转化为字符串时间
time.strftime(format, p_tuple=None):把元组时间转化为格式化的字符串时间。如果 p_tuple 未指定,默认time.localtime()的值。
返回值:指定格式的时间
返回值类型:字符串型
常用格式及说明如下:
格式 | 说明 |
%m | 几月份(01 - 12) |
%d | 一个月中的第几天(01 - 31) |
%H | 一天中的第几个小时(00 - 23) |
%j | 一年中的第几天(001 - 366) |
%Y | 公历的年份 |
%T | 时:分:秒 (格式输出当前时间) |
%F | 年 - 月 - 日 (格式输出当前时间) |
%M | 分钟数(00 - 59) |
%S | 秒(01 - 61) |
tuple_time = time.localtime()
# 按照天-月格式输出时间
print(time.strftime('%d-%m',tuple_time))
输出结果:
tuple_time = time.localtime()
# 按照年/月/日格式输出当前时间
print(time.strftime('%Y/%m/%d',tuple_time))
输出结果:
tuple_time = time.localtime()
# 按照 时:分:秒 格式输出当前时间
print(time.strftime('%T',tuple_time))
输出结果:
tuple_time = time.localtime()
# 按照 年-月-日 格式输出当前时间
print(time.strftime('%F',tuple_time))
输出结果:
3. 将时间戳转换为字符串时间
time.ctime()
返回值:字符串时间
返回值类型:字符串型
time_now = os.path.getctime('data.txt')
print(time_now)
print(time.ctime(time_now))
输出结果:
3. datetime模块
首先导入模块:
from datetime import date
from datetime import datetime
from datetime import timedelta
1. 当前日期
date.today():按照 年 - 月 - 日 格式输出当前日期
print(date.today())
输出结果:
datetime.now():按照 年 - 月 - 日 时:分:秒 的格式输出当前时间
print(datetime.now())
2. 如何计算三天前的时间和三天后的时间
d = date.today()
delta = timedelta(days=3)
print('3天后是: ', d + delta)
print('3天前是: ', d - delta)
输出结果如下:
3. 如何计算两个小时前的时间和两个小时后的时间
now_hour = datetime.now()
delta = timedelta(hours=2)
print('两个小时前是: ',now_hour - delta)
print('两个小时后是: ',now_hour + delta)
运行结果:
4. 返回两个时间 想计算两个时间之间的时间差
now_time = datetime.now()
print('当前时间: ', now_time)
pwd_time = os.path.getmtime('data.txt')
print('最近文件修改时间: ', pwd_time)
pwd_time_obj = datetime.fromtimestamp(pwd_time)
print('最近文件修改时间的字符串时间: ', pwd_time_obj)
delta = now_time - pwd_time_obj
print('文件最后一次修改到现在的时间差: ', delta)
运行结果: