Python中的时间元组与时间日期
一、时间元组(time.struct_time)
python中时间元组是一个比较重要的类型,通过时间元组我们可以获取,年月日时分秒,星期几,一年中的第几天等信息。
索引 属性 属性含义 属性取值
0
tm_year
4位数年份
0000-9999
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,366闰年
8
tm_isdst
夏令标识
1-夏令时,0-非夏令时 -1-不确定,可能是因为手动创建
import time# <class "time.struct_time">
localtime = time.localtime()
# time.struct_time(tm_year=2019, tm_mon=11, tm_mday=3, tm_hour=9, tm_min=8, tm_sec=21, tm_wday=0, tm_yday=307, tm_isdst=0)
print(type(localtime))
print(localtime)
for attr in localtime:
print(attr)
二、时间格式化
时间格式化是非常常用的一个功能,不管是从字符串到struct_time、date、datetime,还是从struct_time、date、datetime到字符串都需要用到。
格式化主要涉及到2个函数:
strftime:str表示字符串,f是format,time是时间,就是时间格式化为字符串
strptime:str表示字符串,p是parse,time是时间,就是字符串解析为时间
time和datetime都有这2个函数,后面会介绍,下面先看一下格式化的含义。
格式 含义
%y
两位数的年份表示,00-99
%Y
四位数的年份表示,0000-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.MP.M
%U
第几周,00-53,星期天为星期的开始
%W
第几周,00-53,星期一为星期的开始
%w
星期几,0-6,星期天为星期的开始
%x
本地日期
%X
本地时间
%Z
当前时区的名称
%%
%符合,因为被当做转义字符
三、time
time模块,主要处理和时间元组(struct_time)的格式化和解析。
当日也有本地化时间、获取时间戳,程序休眠等函数。
注意和datetime.time区分,datetime.time就是一般意义上的日期时间中的时间部分,主要就是时分秒。
import time# 格林威治天文时间元组
print(time.gmtime())
print(time.gmtime(1577851199))
# 本地时间元组
print(time.localtime())
print(time.localtime(1577851199))
# 格式化时间
# time.asctime([tupletime])
print(time.asctime())
# time.ctime([secs])
print(time.ctime())
# 格式化成2020-01-01 11:59:59形式
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
# 将格式字符串转换为时间戳
a = "2020-01-01 11:59:59"
str2TT = time.strptime(a, "%Y-%m-%d %H:%M:%S")
# 时间元组到时间戳
ts = time.mktime(str2TT)
print(ts)
# 时间戳
print(time.time())
# 休眠秒
time.sleep(1)
四、datetime
datetime模块中主要使用的是:
datetime.date:日期(2025-01-01)
datetime.time:时间(12:00:00)
datetime.datetime:时期(2025-01-01 12:00:00)
import datetimeimport time
today = datetime.date.today()
print(today)
print(type(today))
# 星期几,isoweekday星期天是第一天,weekday星期一是第一天
print(today.isoweekday())
print(today.weekday())
# 时间元组
print(today.timetuple())
# 第几天
print(today.toordinal())
datetime.date.fromordinal(today.toordinal())
print(datetime.date(2020, 1, 1))
datetime.date.fromtimestamp(time.time())
print(datetime.time(12, 59, 59, 999))
# 现在本地日期
print(datetime.datetime.now())
# 现在utc日期
print(datetime.datetime.utcnow())
print(datetime.datetime(2020, 1, 31, 12, 59, 59, 0))
# 字符串到日期
print(datetime.datetime.strptime("2020-1-1 12:01", "%Y-%m-%d %H:%M"))
# 日期格式化
print(datetime.datetime.now().strftime("%Y-%m-%d %H:%M"))
最常用的还是:
# 字符串得到日期datetime.datetime.strptime("2020-1-1 12:01", "%Y-%m-%d %H:%M")
# 日期格式化
datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
五、timedelta
timedelta也是datetime模块下的,主要是用于日期计算的。
在需要使用到时间间隔的时候非常有用,例如需要上一个月,前一天,上一周这样的日期,就可以使用datetime和timedelta很容易得到。
import datetimeimport time
today = datetime.date.today()
# 上个月最后一天
lastMonthLastDay = datetime.date(today.year, today.month, 1) - datetime.timedelta(1)
print(lastMonthLastDay)
# 上个月第一天
lastMonthFirstDay = datetime.date(lastMonthLastDay.year, lastMonthLastDay.month, 1)
print(lastMonthFirstDay)
# 一周之前
print(today - datetime.timedelta(7))
# 本周一
thisMonday = today - datetime.timedelta(today.isoweekday()-1)
print(thisMonday)
# 本周星期天
lastMonday = thisMonday - datetime.timedelta(7)
print(lastMonday)
# 上周星期天
lastSunday = today - datetime.timedelta(days=today.isoweekday())
print(lastSunday)
# 上周星期一
lastMonday = lastSunday - datetime.timedelta(days=6)
print(lastMonday)
# 8小时后
print(datetime.datetime.now() + datetime.timedelta(hours=8))
start = datetime.datetime.now()
time.sleep(1)
end = datetime.datetime.now()
diff = end - start
# <class "datetime.timedelta">
print(type(diff))
print(diff)
六、calendar
import calendar# 是否是闰年
print(calendar.isleap(2020))
calendar是日历
以上是 Python中的时间元组与时间日期 的全部内容, 来源链接: utcz.com/z/510416.html