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

使用Python的time函数处理时间和日期

发布时间:2023-05-30 21:16:49

Python是一种面向对象的高级编程语言,它被广泛用于数据科学、机器学习、深度学习等各种领域。在实际开发中,经常需要处理时间和日期。Python提供了time模块、datetime模块和calendar模块等,可以方便地处理日期和时间相关的操作。本文主要介绍time模块的相关用法。

time模块

time模块提供了许多函数来操作时间。下面是一些常用的函数:

- time():返回当前时间的时间戳(从1970年1月1日开始的秒数)。

- localtime([secs]):将时间戳转换为本地时间(结构化时间)。

- asctime([t]):将结构化时间转换为字符串格式(Wed Jun 15 12:00:00 2016)。

- strftime(format[, t]):将结构化时间转换为指定格式的字符串。

- sleep(secs):让程序睡眠指定秒数。

下面是一些时间的例子:

import time

#获取当前时间戳

secs = time.time()

print(secs)

#输出:1610619882.2342513

#将时间戳转换为结构化时间

t = time.localtime()

print(t)

#输出:time.struct_time(tm_year=2021, tm_mon=1, tm_mday=15, tm_hour=15, tm_min=44, tm_sec=42, tm_wday=4, tm_yday=15, tm_isdst=0)

#将结构化时间转换为字符串格式

t_str = time.asctime(t)

print(t_str)

#输出:Fri Jan 15 15:44:42 2021

#将结构化时间转换为指定格式的字符串

t_str2 = time.strftime('%Y-%m-%d %H:%M:%S', t)

print(t_str2)

#输出:2021-01-15 15:44:42

#让程序睡眠2秒

time.sleep(2)

#再次获取当前时间戳

secs2 = time.time()

print(secs2)

#输出:1610619884.236625

结构化时间

在Python中,时间和日期都是使用结构化时间(struct_time)来表示。结构化时间是一个元组,包含以下9个字段:

- tm_year:年份,如2021。

- tm_mon:月份,范围是1~12。

- tm_mday:日期,范围是1~31。

- tm_hour:小时,范围是0~23。

- tm_min:分钟,范围是0~59。

- tm_sec:秒数,范围是0~61(60和61用于闰秒)。

- tm_wday:星期几,范围是0~6(0表示星期一)。

- tm_yday:该年的第几天,范围是1~366。

- tm_isdst:是否为夏令时,如果是,则值为1;否则为0。

可以使用元组的方式或点号的方式来访问结构化时间的各个字段。

import time

t = time.localtime()

print(t)

#输出:time.struct_time(tm_year=2021, tm_mon=1, tm_mday=15, tm_hour=16, tm_min=16, tm_sec=17, tm_wday=4, tm_yday=15, tm_isdst=0)

print(t.tm_year)  #输出:2021

print(t[1])       #输出:1

日期和时间格式化

strftime()函数可以将结构化时间格式化为指定格式的字符串,具体格式如下表所示:

%a  本地(locale)简化星期名称

%A  本地完整星期名称

%b  本地简化月份名称

%B  本地完整月份名称

%c  本地相应的日期和时间表示

%d  月内中的一天(01~31)

%H  24小时制小时数(00~23)

%I  12小时制小时数(01~12)

%j  年内的一天(001~366)

%m  月份(01~12)

%M  分钟数(00~59)

%p  本地am或pm的等价符

%S  秒(00~61,60和61用于闰秒)

%U  一年中的星期数(00~53,星期天为一周的开始)

%w  星期(0~6),星期天为0

%W  一年中的星期数(00~53,星期一为一周的开始)

%x  本地相应日期

%X  本地相应时间

%y  去掉世纪的年份(00~99)

%Y  完整的年份

%z  时区以+HHMM或-HHMM表示

%Z  时区的名称(如果是本地时间则为空字符串)

%%  %号本身

例如,将日期时间格式化为'2021-01-15 16:16:17'的字符串。

import time

t = time.localtime()

t_str = time.strftime("%Y-%m-%d %H:%M:%S", t)

print(t_str)

#输出:2021-01-15 16:16:17

日期时间转换

有时需要将字符串格式的时间转换为时间戳或结构化时间。可以使用strptime()函数将字符串解析为结构化时间,具体用法如下:

datetime.strptime(date_string, format)

其中,date_string是待解析的字符串,format是日期时间格式。被解析的字符串格式必须与format指定的格式一致,否则会抛出异常。如果解析成功,则返回结构化时间。

例如,将字符串'2021-01-15 16:16:17'转换为时间戳。

import time

from datetime import datetime

dt = datetime.strptime('2021-01-15 16:16:17', '%Y-%m-%d %H:%M:%S')

secs = time.mktime(dt.timetuple())

print(secs)

#输出:1610712977.0

如果需要将时间戳转换为结构化时间,可以使用localtime()函数,具体用法如下:

time.localtime([secs])

其中,secs是时间戳,默认值为当前时间戳。如果给定了时间戳,则返回对应的结构化时间;否则返回当前时间的结构化时间。

例如,将时间戳1610712977.0转换为结构化时间。

import time

t = time.localtime(1610712977.0)

print(t)

#输出:time.struct_time(tm_year=2021, tm_mon=1, tm_mday=15, tm_hour=16, tm_min=16, tm_sec=17, tm_wday=4, tm_yday=15, tm_isdst=0)

小结

Python的time模块提供了许多与时间相关的函数,可以方便地进行时间戳、结构化时间、字符串格式等之间的转换。结构化时间是一个元组,包含9个字段,可以通过元组的方式或点号的方式来访问。通过strftime()函数,可以将结构化时间格式化为指定格式的字符串。通过strptime()函数,可以将字符串解析为结构化时间。