第二十篇 Python datetime模块

742 阅读2分钟

datetime是python处理时间和日期的标准库!

类名功能
date日期对象,常用的属性有year,month,day
time时间对象,常用的属性有hour,minute,second,毫秒
datetime(常用!)日期时间对象,常用的属性有hour,minute,second,microsecond
timedelta(常用!)时间间隔对象,即两个时间点之间的长度

1、date类

date类是一个日期类,由年、月、日组成。由于Python也是面向对象编程语言,所以针对类,就会有构造函数,该类的构造函数如下:

  • class datetime.date(year, month, day):

    • year: 表示年,范围[MINYEAR, MAXYEAR],即[1, 9999]
    • month: 表示月,范围[1, 12]
    • day:一月中第几天,最大值根据给定的year,month参数来决定。例如闰年2月份有29天

1.1、示例

import datetime

now_date = datetime.date(2021, 8, 8)  # 年,月,日
print(now_date)  # 2021-08-08

1.2、返回日期对应的星期

import datetime

print(datetime.date(2021, 8, 8).weekday())  # 6

2、time类

import datetime

now_time = datetime.time(13, 27, 22, 3)  # 时,分,秒,毫秒
print(now_time)  # 13:27:22.000003

3、datetime类

3.1、常用方法:

  • 获取当前日期时间:datetime.now()
  • 获取当前日期:datetime.now().date()
  • 获取当前时间:datetime.now().time()

3.1.1、示例

from datetime import datetime

now_datetime = datetime.now()
print('当前日期时间:', now_datetime)
print('当前日期:', now_datetime.date())
print('当前时间:', now_datetime.time())

3.2、日期时间转化为时间戳

datetime.now().timestamp()

3.2.1、示例

from datetime import datetime

print(datetime.now().timestamp())  # 1628400938.312667

3.3、日期时间转化为时间戳

datetime.fromtimestamp(1628400938.312667)

3.3.1、示例

from datetime import datetime

print(datetime.fromtimestamp(1628400938.312667))  # 2021-08-08 13:35:38.312667

3.4、日期时间对象转字符串

datetime.now().strftime('%Y-%m-%d')

3.4.1、示例

from datetime import datetime

print(datetime.now().strftime('%Y-%m-%d'))  # 2021-08-08

3.5、字符串转日期时间对象

datetime.strptime(data_str, format)

3.5.1、示例

from datetime import datetime
print(datetime.strptime('2021-8-8 13:42:00', '%Y-%m-%d %H:%M:%S'))  # 2021-08-08 13:42:00

4、时间间隔对象

此类用于时间计算!注意:使用时必须是时间对象和timedelta对象进行运算,否则报错。

4.1 示例

import datetime

now = datetime.datetime.now()
a = datetime.timedelta(hours=10, minutes=12, seconds=22)
print(now - a)
print(now + a)

5、获取指定月天数

在python的datetime模块中没有一个月有多少天的方法,但是可以使用calendar模块获得。

import calendar

monthRange = calendar.monthrange(2021, 8)
print(monthRange)  # (6, 31)

monthRange可返回两个整数:

  • 第一个整数:代表本月起始星期数(0:星期一 ... 6:星期天)。
  • 第二个整数:代表本月最后一天的日期数。