python标准库中关于日期和时间的库主要有三个:calendar
、time
和datetime
。
1.calemdar模块
calendar
模块在日历的获取、显示以及年份是否为闰年等方面有诸多函数支持
1.1打印日历
import calendar
# 输出2022年9月份的日历
print(calendar.month(2022, 9))
- 输出结果
September 2022
Mo Tu We Th Fr Sa Su
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
1.2 判断是否为闰年
# 判断是否为闰年
calendar.isleap(2022)
- 输出结果
False
2.time 模块
time
主要功能体现在时间计算、处理以及显示格式上
2.1显示当前时间
- 使用
time( )
方法可以返回字1970年1月1日起0时0分0秒为计时器点的时间戳
# 返回当前时间戳
time.time()
- 输出结果
1664183018.168783
- 如果想要获取年月日形式的时间,则可以采用
localtime( )
、asctime( )
、ctime( )
方法来实现
- 三者的比较
方法名 | 参数 | 返回结果 |
---|---|---|
localtime() | 时间戳 | 时间元组形式 |
ctime() | 时间戳 | 字符串形式 |
asctime() | 时间元组 | 字符串形式 |
- 实例
t1 = time.localtime(2022)
print(t1)
time.ctime(2022)
time.asctime(t1)
- 输出结果
time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=33, tm_sec=42, tm_wday=3, tm_yday=1, tm_isdst=0)
'Thu Jan 1 08:33:42 1970'
'Thu Jan 1 08:33:42 1970'
- 补充
localtime()
函数返回值为时间元组,struct_time
元组为时间元组,将诸多时间相关属性存储成元组的形式。
struct_time
元组有9个属性元素,9个元素代表的意义如下表所示。
元素下标值 | 属性 | 含义 | 值 |
---|---|---|---|
tm_year | 年(四位数形式) | 2022 | |
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 |
6 | tm_wday | 一周中的第几天 | 0~6(0代表一周) |
7 | tm_yday | 一年中的第几天 | 0~366 |
8 | tm_isdst | 夏令时 | -1,0或1 |
2.2字符与时间的转换
时间数据在文件中一般保存成字符串形式,如“12/02/2016”,通过
time
模块中的strftime()
方法和strptime()
方法可实现时间的字符串形式与时间元组形式互相转换。
两个函数的参数形式如下:
# strptime函数将特定形式的字符串形式转换成时间元组
time.strptime(string[, format])
# strftine()函致将时间元组转换成特定形式的时间元组
time.strftime(format [, t])
- 举个例子
from time import strftime, strptime
t1 = strptime("22/09/2021", "%d/%m/%Y")
print(t1)
strftime("%d %b %y", t1)
- 输出结果
time.struct_time(tm_year=2021, tm_mon=9, tm_mday=22, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=265, tm_isdst=-1)
'22 Sep 21'
上述代码中," $%d/%m/%Y$ " 表示的是时间格式,具体含义可参照下表:
符号格式 | 含义 | 取值(字符格式) |
---|---|---|
$%y$ | 略去世纪的两位十进制数年份 | 取值为00~ 99(如“16”) |
$%Y$ | 完全形式的年份 | 如“2016” |
$%m$ | 返回月份值 | 取值为01~12(如“02") |
$%b$ | 本地简化月份名称 | 月份简写的英文名称(如“Feb") |
$%B$ | 本地全部月份名称 | 月份英文名称(如“February") |
$%d$ | 每个月天数的十进制形式 | 取值为01~31(比如,02代表2日) |
$%a$ | 本地简化星期名称 | 如“Sat” |
$%A$ | 本地完整星期名称 | 如“Saturday” |
$%w$ | 十进制数字表示星期 | 取值0~6,0表示星期天 |
$%W$ | 一年中的星期数 | 取值00~53,星期一为星期的开始;在新年第一个星期一之前的所有天数都视为00周 |
$%U$ | 一年中的星期数 | 取值00 ~53,星期天为星期的开始;在新年第一个星期天之前的所有天数都视为00周 |
$%H$ | 二十四小时制时间 | 取值为00~ 23 |
$%I$ | 十二小时制时间 | 取值为01~ 12 |
$%M$ | 分钟 | 取值为00~59 |
$%S$ | 秒 | 取值为00~61(考虑到闰秒的情况) |
3.datetime模块
datetime
模块的作用和time
模块十分相似,经常用于一些转换和运算操作
3.1获取当前时间
from datetime import datetime
now = datetime.now()
now
- 输出结果
datetime.datetime(2022, 9, 26, 21, 56, 17, 575501)
3.2进行时间的加减
datetime
对象进行减法运算后会返回一个timedelta
对象,表示一个时间段
delta = datetime(2022, 9, 10) - datetime(2022, 9, 1)
delta
- 输出结果
datetime.timedelta(days=9)
3.3字符串与日期的转换
同样的,
datetime
中也有strftime
和strptime
用作字符串和日期之间的转换
- 举个例子
now = datetime.now()
datetime.strftime(now, "%d/%m/%Y")
datetime.strptime("2022-09-23", "%Y-%m-%d")
- 输出结果
'26/09/2022'
datetime.datetime(2022, 9, 23, 0, 0)
==如果认为设置“ $%d/%m/%Y$ ”这种日期格式十分麻烦,可以使用deteutil的第三方包paser.pars()函数实现自动转移,它能够解析几乎任何格式(当然也可能会带来一些麻烦,如:parse("10"))==
- 举个栗子
from dateutil.parser import parse
parse("23-09-2022", dayfirst=True)
parse("23-09-2022")
parse("10") # 会默认为当月的10号进行解析
- 输出结果
datetime.datetime(2022, 9, 23, 0, 0)
datetime.datetime(2022, 9, 23, 0, 0)
datetime.datetime(2022, 9, 10, 0, 0)
标签:2022,python,datetime,日期,tm,模块,time,元组,取值
From: https://blog.51cto.com/coderusher/5714423