Python中的时间元组与时间日期

编程

一、时间元组(time.struct_time)

python中时间元组是一个比较重要的类型,通过时间元组我们可以获取,年月日时分秒,星期几,一年中的第几天等信息。

索引

属性

属性含义

属性取值

0

tm_year

4位数年份

0000-9999

1

tm_mon

1-12

2

tm_mday

1-31

3

tm_hour

小时

0-23

4

tm_min

分钟

0-59

5

tm_sec

0-61,60、61是闰秒

6

tm_wday

星期几

0-6,0是周一

7

tm_yday

一年的第几天

1到366,366闰年

8

tm_isdst

夏令标识

1-夏令时,0-非夏令时 -1-不确定,可能是因为手动创建

import time

# <class "time.struct_time">

localtime = time.localtime()

# time.struct_time(tm_year=2019, tm_mon=11, tm_mday=3, tm_hour=9, tm_min=8, tm_sec=21, tm_wday=0, tm_yday=307, tm_isdst=0)

print(type(localtime))

print(localtime)

for attr in localtime:

print(attr)

二、时间格式化

时间格式化是非常常用的一个功能,不管是从字符串到struct_time、date、datetime,还是从struct_time、date、datetime到字符串都需要用到。

格式化主要涉及到2个函数:

strftime:str表示字符串,f是format,time是时间,就是时间格式化为字符串

strptime:str表示字符串,p是parse,time是时间,就是字符串解析为时间

time和datetime都有这2个函数,后面会介绍,下面先看一下格式化的含义。

格式

含义

%y

两位数的年份表示,00-99

%Y

四位数的年份表示,0000-9999

%m

月份,01-12

%d

日期,0-31

%H

24小时制小时数,0-23

%I

12小时制小时数,01-12

%M

分钟,00-59

%S

秒,00-59

%a

本地简化星期名称

%A

本地完整星期名称

%b

本地简化的月份名称

%B

本地完整的月份名称

%c

本地日期表示和时间表示

%j

第几天,001-366

%p

本地A.MP.M

%U

第几周,00-53,星期天为星期的开始

%W

第几周,00-53,星期一为星期的开始

%w

星期几,0-6,星期天为星期的开始

%x

本地日期

%X

本地时间

%Z

当前时区的名称

%%

%符合,因为被当做转义字符

三、time

time模块,主要处理和时间元组(struct_time)的格式化和解析。

当日也有本地化时间、获取时间戳,程序休眠等函数。

注意和datetime.time区分,datetime.time就是一般意义上的日期时间中的时间部分,主要就是时分秒。

import time

# 格林威治天文时间元组

print(time.gmtime())

print(time.gmtime(1577851199))

# 本地时间元组

print(time.localtime())

print(time.localtime(1577851199))

# 格式化时间

# time.asctime([tupletime])

print(time.asctime())

# time.ctime([secs])

print(time.ctime())

# 格式化成2020-01-01 11:59:59形式

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

# 将格式字符串转换为时间戳

a = "2020-01-01 11:59:59"

str2TT = time.strptime(a, "%Y-%m-%d %H:%M:%S")

# 时间元组到时间戳

ts = time.mktime(str2TT)

print(ts)

# 时间戳

print(time.time())

# 休眠秒

time.sleep(1)

四、datetime

datetime模块中主要使用的是:

datetime.date:日期(2025-01-01)

datetime.time:时间(12:00:00)

datetime.datetime:时期(2025-01-01 12:00:00)

import datetime

import time

today = datetime.date.today()

print(today)

print(type(today))

# 星期几,isoweekday星期天是第一天,weekday星期一是第一天

print(today.isoweekday())

print(today.weekday())

# 时间元组

print(today.timetuple())

# 第几天

print(today.toordinal())

datetime.date.fromordinal(today.toordinal())

print(datetime.date(2020, 1, 1))

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

print(datetime.time(12, 59, 59, 999))

# 现在本地日期

print(datetime.datetime.now())

# 现在utc日期

print(datetime.datetime.utcnow())

print(datetime.datetime(2020, 1, 31, 12, 59, 59, 0))

# 字符串到日期

print(datetime.datetime.strptime("2020-1-1 12:01", "%Y-%m-%d %H:%M"))

# 日期格式化

print(datetime.datetime.now().strftime("%Y-%m-%d %H:%M"))

最常用的还是:

# 字符串得到日期

datetime.datetime.strptime("2020-1-1 12:01", "%Y-%m-%d %H:%M")

# 日期格式化

datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")

五、timedelta

timedelta也是datetime模块下的,主要是用于日期计算的。

在需要使用到时间间隔的时候非常有用,例如需要上一个月,前一天,上一周这样的日期,就可以使用datetime和timedelta很容易得到。

import datetime

import time

today = datetime.date.today()

# 上个月最后一天

lastMonthLastDay = datetime.date(today.year, today.month, 1) - datetime.timedelta(1)

print(lastMonthLastDay)

# 上个月第一天

lastMonthFirstDay = datetime.date(lastMonthLastDay.year, lastMonthLastDay.month, 1)

print(lastMonthFirstDay)

# 一周之前

print(today - datetime.timedelta(7))

# 本周一

thisMonday = today - datetime.timedelta(today.isoweekday()-1)

print(thisMonday)

# 本周星期天

lastMonday = thisMonday - datetime.timedelta(7)

print(lastMonday)

# 上周星期天

lastSunday = today - datetime.timedelta(days=today.isoweekday())

print(lastSunday)

# 上周星期一

lastMonday = lastSunday - datetime.timedelta(days=6)

print(lastMonday)

# 8小时后

print(datetime.datetime.now() + datetime.timedelta(hours=8))

start = datetime.datetime.now()

time.sleep(1)

end = datetime.datetime.now()

diff = end - start

# <class "datetime.timedelta">

print(type(diff))

print(diff)

六、calendar

import calendar

# 是否是闰年

print(calendar.isleap(2020))

calendar是日历

以上是 Python中的时间元组与时间日期 的全部内容, 来源链接: utcz.com/z/510416.html

回到顶部