字符串 | 意义 |
---|---|
%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 | 当前时区的名称 |
%% | %号 |
只要记住常用的几个即可。具体用法可参照下面的一些示例。
time模块中时间表现的格式主要有三种:
import time
time.time()
# 1586537393.1771245
t1 = time.time()
time.sleep(3)
t2 = time.time()
print(t1-t2)
# -3.0009653568267822
print(time.localtime())
# 结果如下
time.struct_time(tm_year=2020, tm_mon=4, tm_mday=11, tm_hour=1, tm_min=8, tm_sec=55, tm_wday=5, tm_yday=102, tm_isdst=0)
localtime = time.asctime( time.localtime(time.time()) )
print(localtime)
# Sat Apr 11 01:12:26 2020
print(time.strptime('2020-04-15 08:00:00', '%Y-%m-%d %X'))
# time.struct_time(tm_year=2020, tm_mon=4, tm_mday=15, tm_hour=8, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=106, tm_isdst=-1)
print(time.strftime('%Y-%m-%d %X', (2020, 1, 6, 8, 20, 56, 0, 6, 0)))
# 2020-01-06 08:20:56
datatime模块重新封装了time模块,提供更多接口,提供的类有:date,time,datetime,timedelta,tzinfo。
date对象由year年份、month月份及day日期三部分构成:datetime.date(year, month, day)
from datetime import date
a = date.today()
print(a) # 2020-04-11
print(a.year) # 2020
print(a.month) # 4
print(a.day) # 11
from datetime import date
a = date.today()
b= date(2020,1,20)
print(a.__eq__(b)) # False
print( a.__ge__(b)) # True
date类还可以标准化ISO日期:
from datetime import date
a = date(2020,4,11)
print(a.isocalendar())
print(a.isocalendar()[0])
print(a.isocalendar()[1])
print(a.isocalendar()[0])
# 结果如下
(2020, 15, 6)
2020
15
2020
a = date(2020,4,11)
print(a.isoformat())
# 2020-04-11
a = date(2020,4,11)
print(a.isoweekday())
# 6
还有其他属性方法:
.weekday()
判断某日为星期几,返回0-6数字,星期一是0:
day1 = datetime.date(2020,1,19)
print(day1.weekday()) #6
. timetuple():该方法为了兼容time.localtime()返回一个类型为time.struct_time的数组,但有关时间的部分元素值为0。
a = date(2020,4,11)
print(a.timetuple())
# time.struct_time(tm_year=2020, tm_mon=4, tm_mday=11, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=102, tm_isdst=-1)
. replace():返回一个替换指定日期字段的新date对象。参数3个可选参数,分别为year,month,day。注意替换是产生新对象,不影响原date对象。
a = date(2020,4,11)
b = a.replace(2020,1,24)
print(a) # 2020-04-11
print(b) # 2020-01-24
.weekday()方法与isoweekday()类似,但是返回的周一为 0, 周日为 6。
.strftime(fmt):把日期转为格式化字符串:
a = date(2020,4,11)
print(a.strftime("%Y%m%d")) # 20200411
time类由hour小时、minute分钟、second秒、microsecond毫秒和tzinfo五部分组成:
datetime.time(hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] )
import datetime
a = datetime.time(2,24,25,899)
print(a) # 02:24:25.000899
print(a.hour) # 2
print(a.minute) # 24
print(a.second) # 25
time对象也可以比较大小,方法与date相同。
time对象的其他属性和和方法:
datetime类其实是可以看做是date类和time类的合体,其大部分的方法和属性都继承于这二个类。
datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]])
下面看一下datetime常见的方法属性:
import datetime
a = datetime.datetime.now()
print(a) # 2020-04-11 02:40:51.045794
print(a.date()) # 2020-04-11
print(a.time()) # 02:40:51.045794
datetime的strptime和strftime:
datetime.strptime():把字符串格式的日期转为datetime类型的日期。
a = datetime.datetime.strptime('2020-1-24 18:20:20', '%Y-%m-%d %H:%M:%S')
print(type(a)) #
print(a) # 2020-01-24 18:20:20
datetime.strftime():把日期类型转为字符串类型。
now = datetime.datetime.now()
print(now.strftime('%a, %b %d %H:%M'))
# Sat, Apr 11 02:49
使用timedelta可以很方便的在日期上做天days,小时hour,分钟,秒,毫秒,微妙的时间计算,如果要计算月份则需要另外的办法。
此类对象包含以下属性
1、days:天数
2、microseconds:微秒数(>=0 并且 <1秒)
3、seconds:秒数(>=0 并且 <1天)
import datetime
a = datetime.datetime.now()
b = a + datetime.timedelta(days=-1) # 昨天
c = a - datetime.timedelta(days=1) #昨天
print(b) # 2020-04-10 02:55:43.693713
print(c) # 2020-04-10 02:55:43.693713
delta1 = b-a
print(delta1) # -1 day, 0:00:00
print(type(delta1)) #
print(delta1.days) #-1
# 可以通过此方法获取时间差
此模块的函数都是日历相关的,例如打印某月的字符月历。
这里不做重点,简单看一下函数有哪些,知道大概如何使用就行。
最后一个可以用来计算某个日期属于星期几,用到的可能性大点。
参考:https://www.cnblogs.com/awakenedy/articles/9182036.html
https://www.runoob.com/python/python-date-time.html