前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python中的时间类型

python中的时间类型

作者头像
python数据可视化之路
发布2023-02-23 21:18:21
2.2K0
发布2023-02-23 21:18:21
举报

时间类型是编程语言中经常使用到的,且在日常生活中也常用到。本文将介绍几种时间库的常用方法,以满足日常编程的需要,主要涉及的库有: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类型十分重要,因为很多数据都是关于时间序列的。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-01-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python数据可视化之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档