python 操作日期及时间

环境信息

  • Python 3.10

常见用法

获取前一天所属月份

arrow 模块获取

以下示例使用 arrow 模块获取前一天所属月份 [1]

pip install arrow

>>> a = arrow.now() # 当前本地时间

>>> a.shift(months=-1).format("YYYYMM")
'202212'

指定参数 months = -1 就可以计算前一个月的时间。往后一个月就是 month=+1format 指定时间格式。

获取前一个月的天数

通过模块 calendar 获取

>>> import calendar

# 获取 2022-1 月份的天数,输出 tuple ,由此月的第一天是星期几和此月的天数构成。
>>> calendar.monthrange(2022,1)
(5, 31)

时间转换为时间戳

time 模块

使用 time 模块将指定格式的时间,转为时间戳

python
>>> import time
>>> t = "2022-12-01 00:00:00"

### 使用 time.strptime 将指定的时间 t 转换为时间数组
>>> timeArray = time.strptime(t, "%Y-%m-%d %H:%M:%S")
>>> timeArray
time.struct_time(tm_year=2022, tm_mon=12, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=335, tm_isdst=-1)


>>> timestamp = time.mktime(timeArray)
>>> timestamp
1669852800.0

datetime 模块使用

获取日期和时间

获取今天的日期

>>> help(datetime)
>>> datetime.date.today()
datetime.date(2023, 2, 28)

>>> datetime.date.today().year
2023
>>> datetime.date.today().day
28

获取当前的日期和时间

>>> datetime.datetime.now(tz=datetime.timezone.utc)
datetime.datetime(2023, 2, 28, 5, 2, 48, 996356, tzinfo=datetime.timezone.utc)

获取明天的日期

>>> help(datetime.timedelta)

>>> datetime.date.today() + datetime.timedelta(1)

比较时间

>>> expire
datetime.datetime(2023, 12, 23, 6, 26, 2, tzinfo=datetime.timezone.utc)

# 日期比较
>>> expire.date() > datetime.date.today()
True

# 日期和时间比较,tz=datetime.timezone.utc 可以解决时区不同的问题: TypeError: can't compare offset-naive and offset-aware datetimes
>>> expire > datetime.datetime.now(tz=datetime.timezone.utc)
True


脚注