欢迎访问宙启技术站
智能推送

Python中时间处理函数的使用及注意点

发布时间:2023-06-18 14:06:56

时间处理是编程中非常重要的一项功能,Python中也提供了丰富的时间处理函数以及库。本文将介绍Python中时间处理函数的使用及注意点。

一、时间格式化函数

Python中时间格式化函数主要有两个:

1.strftime(format[, t])

strftime函数将时间格式化为指定的字符串形式。其中,第一个参数是字符串格式化指令,第二个参数是可选的时间对象。如果没有提供时间对象,则默认使用当前时间。

下面是一些常见的时间格式化指令:

指令 说明

%Y 年份,如:2018

%m 月份,如:01

%B 月份完整名称,如:January

%b 月份简称,如:Jan

%d 日期,如:18

%A 星期完整名称,如:Monday

%a 星期简称,如:Mon

%H 小时,24小时制,如:03

%I 小时,12小时制,如:03

%p 上午/下午,如:AM

%M 分钟,如:45

%S 秒,如:59

例如:

import time

# 获取当前时间

now = time.time()

# 使用时间戳将时间格式化为字符串

formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(now))

print(formatted_time)

输出结果:

2022-11-04 01:07:51

2.strptime(string, format)

strptime函数将字符串解析为时间对象。其中,第一个参数是时间字符串,第二个参数是字符串格式化指令。

例如:

import time

# 将时间字符串解析为时间对象

time_obj = time.strptime("2022-11-04 01:07:51", "%Y-%m-%d %H:%M:%S")

# 将时间对象转化为时间戳

timestamp = time.mktime(time_obj)

print(timestamp)

输出结果:

1667586471.0

二、日期时间库datetime

Python中的datetime库提供了一些更为高级的时间处理功能,如一些时间的计算、比较等。下面是datetime库中常用的类及方法:

1.datetime.date类

date类表示一个日期,主要有以下方法:

方法 说明

today() 返回当前日期

fromtimestamp(timestamp) 从时间戳创建日期

strftime(format) 将日期格式化为字符串

replace(year, month, day) 替换日期的某些部分

weekday() 返回星期几,0代表星期一,6代表星期天

isoweekday() 返回星期几,1代表星期一,7代表星期天

isocalendar() 返回(ISO year, ISO week number, ISO weekday)

例如:

import datetime

# 获取当前日期

today = datetime.date.today()

print(today)

# 从时间戳创建日期

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

print(date)

# 替换日期的某些部分

date = datetime.date.today()

new_date = date.replace(year=2023)

print(date)

print(new_date)

输出结果:

2022-11-04

2022-11-04

2022-11-04

2023-11-04

2.datetime.datetime类

datetime类表示一个日期和时间,主要有以下方法:

方法 说明

now(tz=None) 返回当前日期和时间

utcnow() 返回当前日期和时间(UTC)

fromtimestamp(timestamp, tz=None) 从时间戳创建日期和时间

strftime(format) 将日期和时间格式化为字符串

replace(year, month, day, hour, minute, second, microsecond, tz) 替换日期和时间的某些部分

weekday() 返回星期几,0代表星期一,6代表星期天

isoweekday() 返回星期几,1代表星期一,7代表星期天

timestamp() 返回时间戳

例如:

import datetime

# 获取当前日期和时间

now = datetime.datetime.now()

print(now)

# 从时间戳创建日期和时间

dt = datetime.datetime.fromtimestamp(time.time())

print(dt)

# 替换日期和时间的某些部分

dt = datetime.datetime.now()

new_dt = dt.replace(year=2023, month=5, day=20)

print(dt)

print(new_dt)

输出结果:

2022-11-04 01:07:51.450031

2022-11-04 01:07:51.450102

2022-11-04 01:07:51.450031

2023-05-20 01:07:51.450031

3.timedelta类

timedelta类表示一段时间,主要有以下方法:

方法 说明

days 天数

seconds 秒数

microsends 微秒数

total_days() 返回总天数

total_seconds() 返回总秒数

例如:

import datetime

# 获取两个日期之间的时间差

date1 = datetime.date.today()

date2 = datetime.date(2023, 5, 20)

delta = date2 - date1

print(delta.days)

# 获取两个日期和时间之间的时间差

dt1 = datetime.datetime.now()

dt2 = dt1 + datetime.timedelta(days=10, hours=5)

delta = dt2 - dt1

print(delta.total_seconds())

输出结果:

931

898500.941332

三、注意点

1.时间戳的精度

在Python中,time.time()返回的时间戳是浮点数,它的小数部分表示分钟级别的精度。

2.不同的时间精度

在Python中,时间精度有多种,如时间戳、datetime对象、date对象等。在进行变量赋值或传参时需注意时间精度的一致性。

3.时区问题

在时间处理过程中,时区的处理方式有所不同。需要根据具体需求考虑使用哪种方式来处理时区问题。

综上,Python提供了丰富的时间处理函数以及库,能够满足我们各种时间处理需求。在使用过程中,需要注意时间精度、时区等问题,保证程序的正确性。