6

python 时间与日期模块总结

 1 year ago
source link: https://blog.51cto.com/coderusher/5714423
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Table of Contents

python标准库中关于日期和时间的库主要有三个:calendartimedatetime

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显示当前时间

  1. 使用time( )方法可以返回字1970年1月1日起0时0分0秒为计时器点的时间戳
# 返回当前时间戳
time.time()
1664183018.168783
  1. 如果想要获取年月日形式的时间,则可以采用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个元素代表的意义如下表所示。

元素下标值 属性 含义
0 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\%d/\%m/\%Y%d/%m/%Y " 表示的是时间格式,具体含义可参照下表:

符号格式 含义 取值(字符格式)
%y\%y%y 略去世纪的两位十进制数年份 取值为00~ 99(如“16”)
%Y\%Y%Y 完全形式的年份 如“2016”
%m\%m%m 返回月份值 取值为01~12(如“02")
%b\%b%b 本地简化月份名称 月份简写的英文名称(如“Feb")
%B\%B%B 本地全部月份名称 月份英文名称(如“February")
%d\%d%d 每个月天数的十进制形式 取值为01~31(比如,02代表2日)
%a\%a%a 本地简化星期名称 如“Sat”
%A\%A%A 本地完整星期名称 如“Saturday”
%w\%w%w 十进制数字表示星期 取值0~6,0表示星期天
%W\%W%W 一年中的星期数 取值00~53,星期一为星期的开始;在新年第一个星期一之前的所有天数都视为00周
%U\%U%U 一年中的星期数 取值00 ~53,星期天为星期的开始;在新年第一个星期天之前的所有天数都视为00周
%H\%H%H 二十四小时制时间 取值为00~ 23
%I\%I%I 十二小时制时间 取值为01~ 12
%M\%M%M 分钟 取值为00~59
%S\%S%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中也有strftimestrptime用作字符串和日期之间的转换

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\%d/\%m/\%Y%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)

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK