python中的时间类型

2023-02-23 21:18:21 浏览数 (1)

时间类型是编程语言中经常使用到的,且在日常生活中也常用到。本文将介绍几种时间库的常用方法,以满足日常编程的需要,主要涉及的库有:timedatetime中的time类型。


1、time库

time库是python的内置库,无需安装,在使用的时候直接import time即可,主要方法有: (1)获取时间戳

代码语言:javascript复制
import time
print('获取时间戳:n', time.time())
#指定日期获取时间戳,使用的方法后面会见到
times = time.strptime('2021/01/23', '%Y/%m/%d') #将指定时间转成struct_time类型
print('指定日期转换成时间戳:n', time.mktime(times)) #使用mktime获取时间戳,传入struct_time类型
代码语言:javascript复制
获取时间戳:
1611379248.227833
指定日期转换成时间戳:
1611331200.0

(2)localtime()方法

localtime()方法可以将时间戳转换为当前时区的struct_time类型,如果不提供参数,以当前时间为准;如果提供则按照提供的为准。

代码语言:javascript复制
print('当前时区的struct_time类型:n', time.localtime())
print('指定时区的struct_time类型:n', time.localtime(time.time()))
代码语言:javascript复制
当前时区的struct_time类型:
time.struct_time(tm_year=2021, tm_mon=1, tm_mday=23, tm_hour=13, tm_min=40, tm_sec=1, tm_wday=5, tm_yday=23, tm_isdst=0)
指定时区的struct_time类型:
time.struct_time(tm_year=2021, tm_mon=1, tm_mday=23, tm_hour=13, tm_min=40, tm_sec=1, tm_wday=5, tm_yday=23, tm_isdst=0)

(3)时间类型转换成字符串

利用了strftime(format, [t])方法,通过指定输出格式和(2)中的struct_time类型,可以返回一个指定格式的字符串时间。

代码语言:javascript复制
print('格式化输出当前时间:n', time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()))
代码语言:javascript复制
格式化输出当前时间:
2021-01-23 13:45:37

time库的常用格式化字符表

格式化符

描述

%a

星期的简写,星期一为Mon

%A

星期的全写,星期一为Monday

%b

月份的简写,四月为Apr

%B

月份的全写,四月为April

%c

日期时间的字符串表示,Sat Jan 23 13:52:08 2021

%d

某一日是在这个月的第几天

%f

微秒,范围[0, 999999]

%H

24小时制

%I

12小时制

%j

某一日是在这一年的第几天

%m

月份

%M

分钟

%p

AM或者PM

%S

%U

某一周是这一年的第几周,周日作为周的第一天

%w

今天在这周的天数

%W

某一周是这一年的第几周,周一作为周的第一天

%x

日期字符串,01/23/2

%X

时间字符串,14:00:57

%y

两个数字表示的年份

%Y

四个数字表示的年份

(4)字符串转化成时间格式

与(3)操作相反,字符串转换成时间格式用到了time.strptime(日期,格式)方法。

代码语言:javascript复制
times = time.strptime('2021/01/23', '%Y/%m/%d')
print('字符串转strut_time对象:n', times)
代码语言:javascript复制
字符串转strut_time对象:
time.struct_time(tm_year=2021, tm_mon=1, tm_mday=23, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=23, tm_isdst=-1

(5)线程休眠

线程休眠用到了time.sleep(秒数),表示程序暂停多少秒后继续运行,在网络爬虫中很常见。


2、datetime库

datetime库是专门用来处理时间的库,常用的有3个类:

datetime.date:年月日构成的日期对象

datetime.datetime:既包含日期,又包含时间

datetime.timedelta:时间间隔对象,计算时间

2.1 datetime.date类

(1)创建date对象

创建date对象有两个方法:(1)创建今天的date使用datetime.date.today()方法;(2)创建指定日期,datetime.date(年,月,日)。

代码语言:javascript复制
from datetime import date
print('创建今天的date对象:n', date.today())
print('创建指定日期的date对象:n', date(2020, 1, 23))
代码语言:javascript复制
创建今天的date对象:
2021-01-23
创建指定日期的date对象:
2020-01-23

(2)date对象转字符串

date转字符串利用date对象的strftime(format)方法,格式说明符同time库一致;

代码语言:javascript复制
date1 = date(2020, 1, 23)
print('格式化输出时间:n', date1.strftime('%Y-%m-%d'))
代码语言:javascript复制
格式化输出时间:
2020-01-23

(3)转成struct_time格式

使用date对象的timetuple()方法,可以传给time.mktime()方法,实现两者的连接。

代码语言:javascript复制
date1 = date(2020, 1, 23)
print('转成struct_time格式:n', date1.timetuple())
代码语言:javascript复制
转成struct_time格式:
time.struct_time(tm_year=2020, tm_mon=1, tm_mday=23, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=23, tm_isdst=-1)

(5)将时间戳转成date对象

此操作与(3)互逆,可以实现从time库到datetime库的转换。

代码语言:javascript复制
time1 = time.time()
print('时间戳转成date对象:n', date.fromtimestamp(time1))
代码语言:javascript复制
时间戳转成date对象:
2021-01-23

(6)date的三种属性

年、月、日是date重要的属性,方法有括号,属性没有括号;获取年月日分别对应year,month,day。

代码语言:javascript复制
date1 = date(2020, 1, 23)
print('年份:n', date1.year)
-----结果-----
年份:
23

(7)替换date对象中的年、月、日

替换date对象的年、月、日用到了date1.replace(year, month, day)方法,如果不填入相应参数,表示对应项不替换。

代码语言:javascript复制
date1 = date(2020, 1, 23)
print('替换年、月份:n', date1.replace(2013, 8))
-----结果-----
替换年、月份:
2013-08-23

2.2 datetime类

(1)创建datetime对象

创建datetime对象与date一样,有两个方法:获取当前的datetime对象,利用datetime.now()方法;获取指定时间的datetime对象,利用datetime(年,月,日,时,分,秒)方法。

代码语言:javascript复制
from datetime import datetime
print('获取现在的datetime对象:n', datetime.now())
print('获取指定时间的datetime对象:n', datetime(2000, 1, 12, 12, 11, 35))
代码语言:javascript复制
获取现在的datetime对象:
2021-01-23 19:28:52.769342
获取指定时间的datetime对象:
2000-01-12 12:11:35

特别的,可以通过datetime对象直接创建date对象,利用datetime.date()直接创建,这是很重要的特性。

代码语言:javascript复制
print('根据datetime对象创建date对象:n', datetime.now().date())
-----结果-----
根据datetime对象创建date对象:
2021-01-23

(2)datetime对象与字符串的互相转化

datetime对象与字符串的互相转化又是datetime的一个重要特性。

代码语言:javascript复制
datetime1 = datetime.now()
time_str1 = '2000/03/06 12:35:46'
print('datetime对象转字符串:n', datetime.strftime(datetime1, '%Y-%m-%d %H:%M:%S'))
print('datetime对象转字符串:n', datetime.strftime(datetime1, '%Y-%m-%d')) #注意,此时仍属于datetime对象而不是date对象
print('字符串转datetime对象:n', datetime.strptime(time_str1, '%Y/%m/%d %H:%M:%S'))

根据(1)可知,字符串转date对象,可以先转为datetime,再转为date。

注意:datetime类型可以转为date,而date不可转为datetime

(3)datetime转struct_time对象

与date类转struct_time对象一样,用到了timetuple()方法,不再赘述。

(4)时间戳与datetime对象的互转

时间戳转datetime对象,运用datetime.fromtimestamp()方法;datetime转时间戳,先把datetime转struct_time对象,再利用time.mktime()方法转换,与date类中相似。

代码语言:javascript复制
time1 = time.time()
print('时间戳转datetime对象:n', datetime.fromtimestamp(time1))
-----结果-----
时间戳转datetime对象:
2021-01-23 19:51:57.837723

(5)datetime的几个属性与替换

与date类类似,datetime增加了hour、minute、second属性,同样通过replace对datetime进行替换,使用方法与date一样。

2.3 timedelta类

timedelta类是一个重要的类,可以对日期进行计算。

语法:datetime1 timedelta(weeks, days, hours, minutes, seconds, milliseconds, microseconds),进行加减操作。

代码语言:javascript复制
from datetime import timedelta
now = datetime.now()
new_day = now   timedelta(days = -50)
print('50天前:n', new_day)
-----结果-----
50天前:
2020-12-04 20:10:50.746098
代码语言:javascript复制
获取从今天往后500天的年月日的字符串
date_ls = [(now timedelta(days=i)).date().strftime('%Y-%m-%d') for i in range(500)]
print(date_ls)
-----结果-----
['2021-01-23',
 '2021-01-24',
 '2021-01-25',
 '2021-01-26',
 '2021-01-27',...

以上就是python中time类型的主要内容,掌握各种日期的转换方法对于理解time类型十分重要,因为很多数据都是关于时间序列的。

0 人点赞