Python时间模块(datetime)

datetime相较于原生的time模块功能要丰富得多。主要二级对象为:

datetime常用模块
类名 说明
date 日期对象,年月日
time 时间对象,时分秒
datetime 日期时间对象,完整的时间,年月日时分秒
timedelta 时间差

一、date对象

1.创建date对象

(1)通过指定年月日

a = datetime.date(2022, 11, 1)
print(a)

# 输出:
2022-11-01

(2)直接获取当天

print(datetime.date.today())

# 输出:
2022-11-01

(3)通过已有date对象创建

这个方法还是比较有用的,在数据处理时经常需要对时间进行替换操作。比如替换年份,月和日不变。

a = datetime.date(2022, 11, 1)
b = a.replace(2018)
print(b)

# 输出:
2018-11-01

(4)通过时间戳

a = datetime.date.fromtimestamp(time.time())
print(a)

# 输出:
2022-11-01

2.一些常用的方法和属性

(1)获取对象的年、月、日

这里实际上提供了一种输出指定格式时间字符串的方法。

a = datetime.date(2022, 11, 1)
print('{}/{}/{}'.format(a.year, a.month, a.day))

# 输出:
2022/11/1

(2)比较日期大小

a = datetime.date(2022, 11, 1)
b = a.replace(2018)
print(a > b)

# 输出:
True

(3)两个日期对象相减获得时间差

返回的实际上就是一个datetime.timedelta对象,该对象将在最后一部分总结。

a = datetime.date(2022, 11, 1)
b = a.replace(2018)
delta = a - b
print(delta.days)

# 输出:
1461

(4)返回struct_time

这个在time模块有总结,链接Python 时间相关(time模块)_Jiangugu的博客-CSDN博客

a = datetime.date(2022, 11, 1)
print(a.timetuple())

# 输出:
time.struct_time(tm_year=2022, tm_mon=11, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=305, tm_isdst=-1)

二、datetime对象

1.创建方法

和date对象一样,datetime同样支持指定年月日时分秒、通过时间戳和替换已有datetime参数来创建。

a = datetime.datetime(2022, 11, 1, 17, 30, 00)
b = datetime.datetime.fromtimestamp(time.time())
c = a.replace(2018)
d = datetime.datetime.now()
print(a, b, c, d)

# 输出:
2022-11-01 17:30:00 2022-11-01 18:32:50.243000 2018-11-01 17:30:00 2022-11-01 18:32:50.243000

 比较特殊的方法是将date和time对象结合进而生成datetime对象

t = datetime.time(17, 30, 0)
dt = datetime.date(2022, 11, 1)
dtt = datetime.datetime.combine(dt, t)
print(dtt)

# 输出:
2022-11-01 17:30:00

2.常用方法和属性

(1)返回日期或时间

datetime实际上是融合了date和time(因此,time类不再单独总结),因而datetime可以将两者拆开返回。

a = datetime.datetime(2022, 11, 1, 17, 30, 00)
print("日期部分:{},时间部分:{}".format(a.date(), a.time()))

# 输出:
日期部分:2022-11-01,时间部分:17:30:00

(2)返回世界统一协调时间

d = datetime.datetime.now()
print(d.utcnow())

# 输出:
2022-11-01 10:48:51.028600

三、timedelta对象

1.可以通过两个datetime或date相减得到

a = datetime.datetime(2022, 11, 1, 17, 30, 00)
b = datetime.datetime.now()
time_delta = b - a
print('现在距离下班已有{}分钟'.format(time_delta.seconds/60))

# 输出:
现在距离下班已有89.21666666666667分钟

2.可以直接构造

time_delta = datetime.timedelta(days=0, seconds=5400)
print('现在距离下班已有{}分钟'.format(time_delta.seconds/60))

# 输出:
现在距离下班已有90.0分钟

3.使用timedelta计算据当前时间指定间隔的时间点

b = datetime.date(2022, 3, 15)
time_delta = datetime.timedelta(days=30)
a = b - time_delta
print('2022年3月15的前30天是:', a)

# 输出:
2022年3月15的前30天是: 2022-02-13

四、与字符串的互相转换

1.字符串转时间

a = datetime.datetime.strptime('2022/11/1', '%Y/%m/%d')
print(a)

# 输出:
2022-11-01 00:00:00

2.时间转字符串

实际上,上面已经提到一种灵活的方式。因为我们既然已经获取了年月日时分秒的具体数值,怎么构造字符串还不是随心所欲。这里提供一个datetime自带的方法。

b = datetime.datetime.now()
a = datetime.datetime.strftime(b, '%Y/%m/%d')
print(a)

# 输出:
2022/11/01

你可能感兴趣的:(基础语法,python,开发语言)