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

Python中的时间和日期处理函数:datetime模块详解

发布时间:2023-06-13 03:17:52

Python中有一个datetime模块,可以方便地处理日期、时间和时间戳等相关的操作。在本文中,我们将详细介绍datetime模块中的各种函数及其用法。

1. datetime类

datetime类是datetime模块中最常用的类之一,它提供了日期和时间的信息,包括年、月、日、小时、分钟、秒和微秒等。可以通过以下方式创建一个datetime对象:

from datetime import datetime
dt = datetime(2021, 1, 10, 12, 0, 0)

以上代码创建了一个datetime对象,表示2021年1月10日12:00:00。通过datetime对象的属性,可以获取具体的日期和时间信息:

print('year:', dt.year)   # year: 2021
print('month:', dt.month) # month: 1
print('day:', dt.day)     # day: 10
print('hour:', dt.hour)   # hour: 12
print('minute:', dt.minute) # minute: 0
print('second:', dt.second) # second: 0
print('microsecond:', dt.microsecond) # microsecond: 0

2. date类

date类是datetime模块中表示日期的类,可以通过以下方式创建一个date对象:

from datetime import date
d = date(2021, 1, 10)

以上代码创建了一个date对象,表示2021年1月10日。通过date对象的属性,可以获取具体的日期信息:

print('year:', d.year)   # year: 2021
print('month:', d.month) # month: 1
print('day:', d.day)     # day: 10

3. time类

time类是datetime模块中表示时间的类,可以通过以下方式创建一个time对象:

from datetime import time
t = time(12, 0, 0)

以上代码创建了一个time对象,表示12:00:00。通过time对象的属性,可以获取具体的时间信息:

print('hour:', t.hour)   # hour: 12
print('minute:', t.minute) # minute: 0
print('second:', t.second) # second: 0
print('microsecond:', t.microsecond) # microsecond: 0

4. timedelta类

timedelta类是datetime模块中表示时间差的类,可以用于计算两个日期或时间之间的差值。可以通过以下方式创建一个timedelta对象:

from datetime import datetime, timedelta
dt1 = datetime(2021, 1, 10, 12, 0, 0)
dt2 = datetime(2021, 1, 11, 12, 0, 0)
td = dt2 - dt1
print(td)  # 1 day, 0:00:00

以上代码计算了dt2和dt1之间的时间差,并将结果保存在td对象中。可以通过timedelta对象的属性和方法,获取具体的时间差信息:

print('days:', td.days)   # days: 1
print('seconds:', td.seconds) # seconds: 0
print('microseconds:', td.microseconds) # microseconds: 0
print('total_seconds:', td.total_seconds()) # total_seconds: 86400.0

5. strftime函数

strftime函数用于将datetime对象格式化为字符串,可以根据自定义的格式输出日期和时间信息。以下是常用的时间格式化字符:

| 格式化字符 | 含义 |

| ---------- | ---------------------------------------------------------- |

| %Y | 年份(4位) |

| %m | 月份(01-12) |

| %d | 日期(01-31) |

| %H | 小时(00-23) |

| %M | 分钟(00-59) |

| %S | 秒数(00-59) |

| %f | 微秒(000000-999999) |

| %a | 星期(Sun-Sat) |

| %A | 星期(Sunday-Saturday) |

| %b | 月份(Jan-Dec) |

| %B | 月份(January-December) |

| %c | 日期时间,如Tue Aug 16 21:30:00 1988 |

| %p | 上午/下午(AM/PM) |

| %x | 日期(mm/dd/yy) |

| %X | 时间(HH:MM:SS) |

| %% | 百分号 |

以下是一些示例代码:

from datetime import datetime
dt = datetime(2021, 1, 10, 12, 0, 0)
print(dt.strftime('%Y-%m-%d'))     # 2021-01-10
print(dt.strftime('%Y年%m月%d日')) # 2021年01月10日

6. strptime函数

strptime函数用于将字符串解析为datetime对象,可以接收两个参数, 个参数表示要解析的字符串,第二个参数表示字符串的格式。以下是一些示例代码:

from datetime import datetime
dt_str = '2021-01-10 12:00:00'
dt = datetime.strptime(dt_str, '%Y-%m-%d %H:%M:%S')
print(dt) # 2021-01-10 12:00:00

以上代码将字符串dt_str解析为datetime对象,解析的格式是'%Y-%m-%d %H:%M:%S',即年、月、日、小时、分钟、秒都必须以特定的格式表示。

7. now函数

now函数用于获取当前时间,可以通过以下方式创建一个datetime对象:

from datetime import datetime
dt = datetime.now()
print(dt) # 当前时间

可以将当前时间格式化为字符串,如下所示:

from datetime import datetime
dt = datetime.now()
print(dt.strftime('%Y-%m-%d %H:%M:%S')) # 当前时间的字符串表示

8. timestamp函数

timestamp函数用于将datetime对象转换为Unix时间戳(即1970年1月1日以来的秒数)。以下是一些示例代码:

from datetime import datetime
dt = datetime(2021, 1, 10, 12, 0, 0)
print(dt.timestamp()) # 1610275200.0

以上代码将datetime对象转换为Unix时间戳,并输出结果为1610275200.0。

9. fromtimestamp函数

fromtimestamp函数用于将Unix时间戳转换为datetime对象,以下是一些示例代码:

from datetime import datetime
timestamp = 1610275200.0
dt = datetime.fromtimestamp(timestamp)
print(dt) # 2021-01-10 12:00:00

以上代码将Unix时间戳转换为datetime对象,并输出结果为2021-01-10 12:00:00。

综上所述,datetime模块提供了丰富的函数和类,可以方便地处理日期和时间相关的操作。在实际应用中,可以根据需要选择合适的函数和类进行处理,提高程序的效率和可读性。