1、概述

python3.7.7版本的内置datetime模块主要包含以下内容:

名称

解释说明

使用频率

datetime.timedelta

datetime模块中的时间跨度类, 可以通过该类进行时间、日期或者时间日期对象的加、减操作

频繁,需要掌握

datetime.time

datetim模块中的时间类,用于时间对象的处理

频繁,需要掌握

datetime.date

datetime模块中的日期类,用于日期对象的处理

频繁,需要掌握

datetime.datetime

datetime模块中的日期时间类,用于日期时间对象的处理

频繁,需要掌握

datetime.tzinfo

处理与时区有关的相关信息的抽象类,子类需要对name(), utcoffset() and dst() 方法进行重写

偶尔,了解即可

datetime.timezone

处理与时区有关的相关信息的类,是tzinfo类的子类,一般处理时区都采用pytz模块

偶尔,了解即可

MINYEAR

datetime模块中的静态变量, 最小年份(1)

了解即可

MAXYEAR

datetime模块中的静态变量,最大年份(9999)

了解即可

2、timedelta类

2.1 引用方式
```python
from datetime import timedelta 
```
2.2 timedelta类属性和方法

timedelta重写了object类的__new__方法,给类增加了days/seconds/microseconds等类属性

python使用dtm python tdd_python使用dtm


python使用dtm python tdd_日期时间_02


python使用dtm python tdd_日期时间_03

2.3 主要使用场景
2.3.1 场景一:往前或者往后推算日期时间
from datetime import datetime, timedelta

# 创建一个日期时间实例对象                                                                                                                                            
dt = datetime(year=2020,month=12,day=29,hour=12,minute=30,second=0)                                                                                                                 
print(dt)                                                                                                                                                                                 
# datetime.datetime(2020, 12, 29, 12, 30)

# 创建一个时间间隔对象,以天为默认单位间隔
td = timedelta(days=1)                                                                                                                                                             
# 日期时间对象与时间间隔做运算,返回值是一个新的时间日期对象
dt- td
# 返回值                                                                                                                                                                           
datetime.datetime(2020, 12, 28, 12, 30)
# 日期时间对象与时间间隔做运算,返回值是一个新的时间日期对象
dt + td
# 返回值                                                                                                                                                                           
datetime.datetime(2020, 12, 30, 12, 30)
# 创建一个时间间隔对象,以分钟为默认单位间隔
td2 = timedelta(minutes=15)                                                                                                                                                         
# 日期时间对象与时间间隔做运算,返回值是一个新的时间日期对象
dt - td2
# 返回值                                                                                                                                                                           
datetime.datetime(2020, 12, 29, 12, 15)
# 日期时间对象与时间间隔做运算,返回值是一个新的时间日期对象
dt + td2                                                                                                                                                                            
datetime.datetime(2020, 12, 29, 12, 45)
# 创建一个时间间隔对象,以小时为默认单位间隔
td3 = timedelta(hours=2)                                                                                                                                                            
# 日期时间对象与时间间隔做运算,返回值是一个新的时间日期对象
dt + td3
# 返回值                                                                                                                                                                          
datetime.datetime(2020, 12, 29, 14, 30)
# 日期时间对象与时间间隔做运算,返回值是一个新的时间日期对象
dt - td3 
# 返回值                                                                                                                                                                          
datetime.datetime(2020, 12, 29, 10, 30)

python使用dtm python tdd_实例方法_04

2.3.2 场景二:两个时间日期对象间计算返回一个timedelta对象
# 创建一个日期时间对象
dt1 = datetime(2020,12,30,12,30,00)                                                                                                                                                 
# 创建一个新的日期时间对象
dt2 = datetime(2019,1,1,0,0,0)                                                                                                                                                      
# 算数运算
dt1 - dt2 
# 返回值为一个timdelta时间间隔类对象                                                                                                                                                                          
datetime.timedelta(days=729, seconds=45000)

python使用dtm python tdd_时间间隔_05

3、date类

3.1 引用方式
# 第一种方式:
import datetime 
# 使用datetime.date(2020,12,25)的方式进行调用

# 第二种方式:
from datetime import date
# 使用date(2020,12,25)的方式进行调用

# 两种方式都可以
3.2 date类属性和类方法、实例方法

先在ipython中看一下有哪些属性和方法,再看源码里面具体的方法介绍

python使用dtm python tdd_python使用dtm_06

  • 1)date类属性表

属性名称

属性类型

属性作用解释

datetime.date.min

类属性

date日期对象所能表示的最小日期

datetime.date.max

类属性

date日期对象所能表示的最大日期

datetime.date.year

实例属性

返回date日期对象中的年份

datetime.date.month

实例属性

返回date日期对象中的月份

datetime.date.day

实例属性

返回date日期对象中的天数

  • 2)date类类方法表

类方法名

方法类型

传参说明

方法作用解释

datetime.date.today()

静态方法


返回一个表示当前本地日期的date对象;

datetime.date.fromisoformat()

静态方法

日期字符串

返回一个表示当前本地日期的date对象;

datetime.date.fromordinal()

静态方法

Gregorian日历时间对象

将Gregorian日历时间转换为本地日期的date对象;

datetime.date.fromtimestamp(timestamp)

静态方法

timestamp

根据给定的时间戮对象,返回一个date日期对象;

  • 3)date类实例方法表

实例方法

方法类型

传参说明

方法作用解释

datetime.date.replace()

实例方法

year,month,day

生成一个新的日期对象,用参数指定的年,月,日代替原有对象中的属性;

datetime.date.timetuple()

实例方法

无,直接使用日期对象调用

返回日期对应的本地时间元组;

datetime.date.toordinal()

实例方法

无,直接使用日期对象调用

返回日期对应的Gregorian Calendar日期;

datetime.date.weekday()

实例方法

无,直接使用日期对象调用

返回weekday,如果是星期一,返回0;如果是星期2,返回1,以此类推;

datetime.date.isoweekday()

实例方法

无,直接使用日期对象调用

返回weekday,如果是星期一,返回1;如果是星期2,返回2,以此类推;

datetime.date.isocalendar()

实例方法

无,直接使用日期对象调用

返回指定日期是该日期是这一年的第几周、周几这三个值;

datetime.date.isoformat()

实例方法

fmt日期格式化字符串

返回格式如’YYYY-MM-DD’的字符串;

datetime.date.ctime()

实例方法

无,直接使用日期对象调用

将一个时间戳(默认为当前时间)返回一个格式为"周几 月份-天数 00:00:00 年份"的字符串

datetime.date.strftime(fmt_str)

实例方法

自定义的格式化字符串

返回一个表示当前本地日期的date对象自定义格式化字符串;字符串格式化字符见下表

  • 3)date类实例格式化符号含义表

格式化符号名称

代表含义

%x

日期字符串(如:01/01/20)

%X

时间字符串(如:12:30:00)

%y

2个数字表示的年份

%Y

4个数字表示的年份

%m

月份([01,12])

%M

分钟([00,59])

%H

小时(24小时制,[0, 23])

%I

小时(12小时制,[0, 11])

%S

秒(范围为[00,61],为什么不是[00, 59],参考python手册_

%b

月份的简写。如12月份为Dec

%B

月份的全写。如12月份为December

%c

日期时间的字符串表示。(如: Tue Dec 29 00:00:00 2020)

%a

星期的简写。如 星期二为Tue

%A

星期的全写。如 星期二为Tuesday

%d

日在这个月中的天数(是这个月的第几天)

%f

微秒(范围[0,999999])

%H

小时(24小时制,[0, 23])

%I

小时(12小时制,[0, 11])

%j

日在年中的天数 [001,366](是当年的第几天)

%p

AM或者PM

%U

周在当年的周数当年的第几周),星期天作为周的第一天

%w

今天在这周的天数,范围为[0, 6],6表示星期天

%W

周在当年的周数(是当年的第几周),星期一作为周的第一天

%z

与utc时间的间隔 (如果是本地时间,返回空字符串)

%Z

时区名称(如果是本地时间,返回空字符串)

%%

%% => %

python使用dtm python tdd_python使用dtm_07


python使用dtm python tdd_实例方法_08

3.3 date类属性、方法使用示例代码
  • 1)日期类的属性使用代码示例
import datetime                                                                                                                                                                     
# 创建日期对象
d1 = datetime.date.today()                                                                                                                                                          
# 输出日期对象
print(d1)                                                                                                                                                                                  
datetime.date(2020, 12, 29)
# 获取日期对象的最小取值,类属性
d1.min                                                                                                                                                                              
datetime.date(1, 1, 1)
# 获取日期对象的最大取值,类属性
d1.max                                                                                                                                                                              
datetime.date(9999, 12, 31)
# 获取日期对象的年份,实例属性
d1.year                                                                                                                                                                             
2020
# 获取日期对象的月份,实例属性
d1.month                                                                                                                                                                            
12
# 获取日期对象的天数,实例属性
d1.day                                                                                                                                                                              
29
  • 2)日期类静态方法及实例方法的代码演示:
import time, datetime

# ================================= 静态方法 ======================================
# 日期类静态方法today(),返回一个日期对象
d1 = datetime.date.today()
print(d1)
2020-12-29
# 使用ipython, 输出d1
d1
datetime.date(2020, 12, 29)

# 日期类静态方法fromisoformat('2020-12-30'), 返回一个日期对象
d2 = datetime.date.fromisoformat('2020-12-30')
print(d2)
2020-12-30
# 使用ipython, 输出d2
d2
datetime.date(2020, 12, 30)

# 日期类静态方法fromtimestamp(timestamp), 返回一个日期对象
d3 = datetime.date.fromtimestamp(time.time())                                                                                                                                       
print(d3)                                                                                                                                                                           
2020-12-29
# 使用ipython, 输出d3
d3                                                                                                                                                                                  
datetime.date(2020, 12, 29)

# ================================= 实例方法 ======================================

# 创建一个date日期对象
d1 = datetime.date(2020,12,29)                                                             

# 调用日期对象方法ctime(), 返回一个c格式的日期对象字符串
d1.ctime()                                                                                 
'Tue Dec 29 00:00:00 2020'

# 调用日期对象方法timetuple(), 返回一个struct_time对象
d1.timetuple()                                                                             
time.struct_time(tm_year=2020, tm_mon=12, tm_mday=29, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=364, tm_isdst=-1)

# 调用日期对象方法weekday(), 返回weekday,取值[0~6],如果是星期一,返回0;如果是星期二,返回1,
d1.weekday()                                                                               
1
# 调用日期对象方法toordinal(), 返回日期对应的Gregorian Calendar日期
d1.toordinal()                                                                             
737788

# 调用日期对象方法isoweekday(), 返回weekday,取值[1~7],如果是星期一,返回1;如果是星期二,返回2,
d1.isoweekday()                                                                            
2

# 调用日期对象方法isocalendar(), 返回指定日期是该日期是这一年的第几周、周几这三个值
d1.isocalendar()                                                                           
(2020, 53, 2)

# 调用日期对象方法isoformat(), 返回格式如'YYYY-MM-DD’的日期字符串
d1.isoformat()                                                                             
'2020-12-29'

# 调用日期对象方法strftime(), 返回自定义格式的日期字符串
d1.strftime('%Y-%m-%d')                                                                    
'2020-12-29'

# 调用日期对象方法replace(), 传入参数(year,month,day), 返回一个新日期对象
d1.replace(2020,12,30)                                                                     
datetime.date(2020, 12, 30)
  • 3)日期对象格式化输出的各种方法代码演示:
**from datetime import date                                                                                                                                                            
# 创建一个本地日期对象
d = date.today()                                                                                                                                                                     
# 调用ctime(),输出c格式的日期字符串,相当于date_obj.strftime('%c')
d.ctime(),类型为字符串                                                                                                                                                                            
'Tue Dec 29 00:00:00 2020'
# 返回日期对象对应星期几的简写,类型为字符串
d.strftime('%a')                                                                                                                                                                     
'Tue'
# 返回日期对象对应星期几的全拼,类型为字符串
d.strftime('%A')                                                                                                                                                                     
'Tuesday'
# 返回日期对象对应月份的简写,类型为字符串
d.strftime('%b')                                                                                                                                                                     
'Dec'
# 返回日期对象对应月份的全拼,类型为字符串
d.strftime('%B')                                                                                                                                                                     
'December'
# 相当于调用ctime(),输出c格式的日期字符串,类型为字符串
d.strftime('%c')                                                                                                                                                                     
'Tue Dec 29 00:00:00 2020'
# 返回日期对象对应年份的完整年份,类型为字符串
d.strftime('%Y')                                                                                                                                                                     
'2020'
# 返回日期对象对应年份的最后两位,类型为字符串
d.strftime('%y')                                                                                                                                                                    
'20'
# 返回日期对象对应时间的分钟,类型为字符串
d.strftime('%M')                                                                                                                                                                    
'00'
# 返回日期对象对应时间的月份,类型为字符串
d.strftime('%m')                                                                                                                                                                    
'12'
# 返回日期对象对应在当年的周数(是当年的第几周),星期一作为周的第一天,类型为字符串
d.strftime('%W')                                                                                                                                                                    
'52'
# 返回日期对象对应在这周的天数,范围为[0, 6],6表示星期天,类型为字符串
d.strftime('%w')                                                                                                                                                                    
'2'
# 返回日期对象对应的小时数(24小时制,[0, 23]),类型为字符串
d.strftime('%H')                                                                                                                                                                    
'00'
# 返回日期对象对应的小时数(12小时制,[0, 11]),类型为字符串
d.strftime('%I')                                                                                                                                                                    
'12'
# 返回日期对象对应的完整日期字符串,类型为字符串
d.strftime('%x')                                                                                                                                                                    
'12/29/20'
# 返回日期对象对应的完整时间字符串,类型为字符串
d.strftime('%X')                                                                                                                                                                    
'00:00:00'
# 返回日期对象对应本地时间的商务还是下午,AM或者PM,类型为字符串
d.strftime('%p')                                                                                                                                                                    
'AM'
# 返回日期对象为该日期在该年中的天数 [001,366](是当年的第几天),类型为字符串
d.strftime('%j')                                                                                                                                                                    
'364'
# 返回日期对象与utc时间的间隔 (如果是本地时间,返回空字符串),类型为字符串
d.strftime('%z')                                                                                                                                                                    
''
# 返回日期对象对应的时区名称(如果是本地时间,返回空字符串),类型为字符串
d.strftime('%Z')                                                                                                                                                                    
''
# 返回日期对象对应的秒数(范围为[00,61],类型为字符串
d.strftime('%S')                                                                           
'00'
# 返回日期对象对应在这个月中的天数(是这个月的第几天),类型为字符串
d.strftime('%d')                                                                           
'29'
# 返回日期对象对应微秒(范围[0,999999]),类型为字符串
d.strftime('%f')                                                                           
'000000'
# 返回日期对象对应周在当年的周数当年的第几周),星期天作为周的第一天,类型为字符串
d.strftime('%U')                                                                           
'52'**

4、datetime类

4.1 引用方式
# 第一种方式:
import datetime 
# 使用datetime.datetime(2020,12,25,12,30,00)的方式进行调用

# 第二种方式:
from datetime import datetime
# 使用datetime(2020,12,25,0,0,0)的方式进行调用

# 两种方式都可以
4.2 datetime类属性和类方法、实例方法

先在ipython中看一下有哪些属性和方法,再看源码里面具体的方法介绍

python使用dtm python tdd_实例方法_09

  • 1)datetime类属性表

属性名称

属性类型

属性作用解释

datetime.datetime.min

类属性

datetime日期时间对象所能表示的最小日期时间

datetime.datetime.max

类属性

datetime日期时间对象所能表示的最大日期时间

datetime.datetime.resolution

类属性

返回datetime日期时间类中的时间间隔最小单位, 默认是microseconds

datetime.datetime.year

实例属性

返回datetime日期时间对象中的年份

datetime.datetime.month

实例属性

返回datetime日期时间对象中的月份

datetime.datetime.day

实例属性

返回datetime日期时间对象中的天数

datetime.datetime.hour

实例属性

返回datetime日期时间对象中的小时

datetime.datetime.minute

实例属性

返回datetime日期时间对象中的分钟

datetime.datetime.second

实例属性

返回datetime日期时间对象中的秒数

datetime.datetime.microsecond

实例属性

返回datetime日期时间对象中的微秒数

datetime.datetime.fold

实例属性

返回datetime日期时间对象的属性,默认取值为0

  • 2)datetime类类方法表

类方法名

方法类型

传参说明

方法作用解释

datetime.datetime.today()

静态方法


返回一个表示当前本地时间的datetime对象;

datetime.datetime.now([tz])

静态方法

[, tz]

返回一个表示当前本地时间的datetime对象,如果提供了参数tz,则获取tz参数所指时区的本地时间;

datetime.datetime.utcnow()

静态方法


返回一个UTC时区的datetime对象;

datetime.datetime.fromtimestamp(timestamp[, tz])

静态方法

timestamp

根据时间戮创建一个datetime对象,参数tz指定时区信息;

datetime.datetime.utcfromtimestamp(timestamp)

静态方法

日期字符串

返回一个utc时区的datetime对象;

datetime.datetime.fromisoformat()

静态方法

‘YYYY-mm-dd H-i-s’

返回一个datetime对象;

datetime.datetime.combine(date_obj, time_obj)

静态方法

date_obj,time_obj

将一个日期对象和一个时间对象组合返回一个datetime对象;

datetime.strptime(date_string, format)

静态方法


将格式字符串转换为datetime对象

  • 3)datetime类实例方法表

实例方法

方法类型

传参说明

方法作用解释

datetime.date()

实例方法

无,直接使用datetime对象调用

获取date对象

datetime.time()

实例方法

无,直接使用datetime对象调用

获取time对象

datetime.datetime.replace()

实例方法

year,month,day,hour,minute,second

生成一个新的datetime对象;

datetime.datetime.timetuple()

实例方法

无,直接使用datetime对象调用

返回datetime对应的本地日期时间struct_time对象;

datetime.datetime.utctimetuple()

实例方法

无,直接使用datetime对象调用

返回datetimede UTC时区下对应的本地日期时间struct_time对象;

datetime.datetime.toordinal()

实例方法

无,直接使用datetime对象调用

返回datetime对应的Gregorian Calendar日期;

datetime.datetime.weekday()

实例方法

无,直接使用datetime对象调用

返回weekday,如果是星期一,返回0;如果是星期2,返回1,以此类推;

datetime.datetime.isoweekday()

实例方法

无,直接使用datetime对象调用

返回weekday,如果是星期一,返回1;如果是星期2,返回2,以此类推;

datetime.datetime.isocalendar()

实例方法

无,直接使用datetime对象调用

返回指定datetime对象是该日期时间是这一年的第几周、周几这三个值;

datetime.datetime.isoformat()

实例方法

fmt日期格式化字符串

返回格式如’YYYY-MM-DD’的字符串;

datetime.datetime.ctime()

实例方法

无,直接使用datetime对象调用

将一个时间戳(默认为当前时间)返回一个格式为"周几 月份-天数 00:00:00 年份"的字符串

datetime.datetime.strftime(fmt_str)

实例方法

日期时间字符串

返回一个表示当前本地日期的datetime对象自定义格式化字符串;字符串格式化字符见下表

python使用dtm python tdd_实例方法_10


python使用dtm python tdd_python使用dtm_11


python使用dtm python tdd_实例方法_12

4.3 datetime类属性、方法使用示例代码
  • 1)日期时间类的属性使用代码示例
import datetime


# 创建日期时间对象
dt = datetime.datetime.today()
# 打印日期时间对象
print(dt)
2020-12-29 16:24:25.664795

# 使用ipython打印日期时间对象
dt
datetime.datetime(2020, 12, 29, 16, 24, 25, 664795)

# 打印日期时间类最小取值,类属性
dt.min
datetime.datetime(1, 1, 1, 0, 0)

# 打印日期时间类最大取值,类属性
dt.max
datetime.datetime(9999, 12, 31, 23, 59, 59, 999999)

# 打印日期时间对象的默认最小间隔单位属性, 类属性
dt.resolution
datetime.timedelta(microseconds=1)

# 打印日期时间对象的年份,实例属性
dt.year
2020

# 打印日期时间对象的月份,实例属性
dt.month
12

# 打印日期时间对象的天数,实例属性
dt.day
29

# 打印日期时间对象的小时,实例属性
dt.hour
16

# 打印日期时间对象的分钟,实例属性
dt.minute
24

# 打印日期时间对象的秒,实例属性
dt.second
25

# 打印日期时间对象的微秒,实例属性
dt.microsecond
664795

# 打印日期时间对象的fold实例属性
dt.fold
0
  • 2)日期类静态方法及实例方法的代码演示:
import datetime, time

# ================================= 静态方法 ======================================
import datetime                                     


# 调用datetime对象方法today(), 返回一个datetime对象
dt1 = datetime.datetime.today()                                     
print(dt1)

# 调用datetime对象方法now(), 返回一个datetime对象
dt2 = datetime.datetime.now()
print(dt2)
2020-12-29 17:04:00.934159

# 调用datetime对象方法now(), 传递一个timezone对象参数,返回一个datetime对象
tz = datetime.timezone(datetime.timedelta(hours=8))
dt3 = datetime.datetime.now(tz=tz)
print(dt3)
2020-12-29 17:05:36.362897+08:00

# 调用datetime对象方法utcnow(), 返回一个datetime对象
dt4 = datetime.datetime.utcnow()                                                                                                                                                   
print(dt4)                                                                                                                                                                         
2020-12-29 09:06:05.074215

import time                                                                                                                                                                        

# 调用datetime对象方法fromtimestamp(), 传递一个时间戳对象,返回一个datetime对象
dt5 = datetime.datetime.fromtimestamp(time.time())                                                                                                                                 
print(dt5)                                                                                                                                                                         
2020-12-29 17:09:26.367811

# 调用datetime对象方法fromtimestamp(), 传递一个时间戳对象和timezone对象,返回一个datetime对象
dt6 = datetime.datetime.fromtimestamp(time.time(), tz=tz)                                                                                                                          
print(dt6)                                                                                                                                                                         
2020-12-29 17:10:04.217299+08:00

# 调用datetime对象方法utcfromtimestamp(), 传递一个时间戳对象,返回一个datetime对象
dt7 = datetime.datetime.utcfromtimestamp(time.time())                                                                                                                              
print(dt7)                                                                                                                                                                         
2020-12-29 09:10:36.116120

# 调用datetime对象方法fromisoformat(), 传递一个日期时间字符串,返回一个datetime对象
dt8 = datetime.datetime.fromisoformat('2020-12-29 12:00:00')
print(dt8)                                                                                                                                                                         
2020-12-29 12:00:00

# 调用datetime对象方法combine(), 传递一个日期对象和一个时间对象,返回一个datetime对象
dt9 = datetime.datetime.combine(datetime.date(2020,12,29), datetime.time(12,30,0))                                                                                                
print(dt9)                                                                                                                                                                         
2020-12-29 12:30:00

# 调用datetime对象方法strptime(), 传递一个日期时间字符串和一个日期时间格式化字符串,返回一个datetime对象
dt10 = datetime.datetime.strptime('2020-01-01 0:0:0', '%Y-%m-%d %H:%M:%S')                                                                                                         
print(dt10)                                                                                                                                                                        
2020-01-01 00:00:00
dt10                                                                                                                                                                               
datetime.datetime(2020, 1, 1, 0, 0)


# ================================= 实例方法 ======================================

# 创建一个datetime日期时间对象
d1 = datetime.datetime(2020,12,29,12,30,30)                                                             

# 调用datetime对象方法ctime(), 返回一个c格式的日期对象字符串
d1.ctime()                                                                                 
'Tue Dec 29 00:00:00 2020'

# 调用datetime对象方法timetuple(), 返回一个struct_time对象
d1.timetuple()                                                                             
time.struct_time(tm_year=2020, tm_mon=12, tm_mday=29, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=364, tm_isdst=-1)

# 调用datetime对象方法weekday(), 返回weekday,取值[0~6],如果是星期一,返回0;如果是星期二,返回1,
d1.weekday()                                                                               
1
# 调用datetime对象方法toordinal(), 返回日期时间对应的Gregorian Calendar日期
d1.toordinal()                                                                             
737788

# 调用datetime对象方法isoweekday(), 返回weekday,取值[1~7],如果是星期一,返回1;如果是星期二,返回2,
d1.isoweekday()                                                                            
2

# 调用datetime对象方法isocalendar(), 返回指定日期时间是该日期是这一年的第几周、周几这三个值
d1.isocalendar()                                                                           
(2020, 53, 2)

# 调用datetime对象方法isoformat(), 返回格式如'YYYY-MM-DD’的日期时间字符串
d1.isoformat()                                                                             
'2020-12-29'

# 调用datetime对象方法strftime(), 返回自定义格式的日期时间字符串
d1.strftime('%Y-%m-%d %H:%M:%S')                                                                    
'2020-12-29 12:30:30'

# 调用datetime对象方法replace(), 传入参数(year,month,day,hour,minute,second), 返回一个新datetime对象
d1.replace(2020,12,30, 13, 25, 10)                                                                     
datetime.date(2020, 12, 30, 13, 25, 10)