IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 【Python数据分析基础-3】Python的日期和时间及其处理的常用方法 -> 正文阅读

[人工智能]【Python数据分析基础-3】Python的日期和时间及其处理的常用方法

0. 引入

上篇文章介绍了Python的标量类型,这篇文章,我将介绍一下Python的日期和时间及其处理的常用方法!

1. Python时间类型简介

Python中常用的时间表示方法有以下几种:

  • 时间戳

  • 格式化的时间字符串

  • time模块的time.struct_time类

  • datetime模块的datetime类

其中时间戳(imestamp) 又称为Unix时间、POSIX时间。它表示从格林尼治时间1970年1月1日0时0分0秒开始到现在所经过的毫秒数,其值为float类型。 但Python返回的是秒数,需要说明的是时间戳是个差值,其值与时区无关。

格式化的时间字符串是形如’2022-01-01 13:14:52’的字符串

time模块和datetime模块我将在下面进行介绍。

2.time模块和datetime模块

Python提供了time模块和datetime模块,我将分别进行简单介绍。

2.1 time模块

time模块我主要介绍两个函数:time.time()和time.localtime()函数

1) time.time()函数

time.time()函数会返回时间戳,即自1970-1-1 0:00:00 至今所经历的秒数

import time
time.time()
# 返回结果
1641043618.381585

2) time.localtime([secs])函数

? time.localtime([secs])函数会返回以指定时间戳对应的本地时间的 struct_time对象,参数为时间戳,需要人为传入,如果不传入参数,则函数会默认返回函数执行时的本地时间。

import time
time.localtime(1641043618.381585)   # 传入参数
time.struct_time(tm_year=2022, tm_mon=1, tm_mday=1, tm_hour=21, tm_min=26, tm_sec=58, tm_wday=5, tm_yday=1, tm_isdst=0)
# 结果为struct_time对象,表示1641043618.381585时间戳对应的时间是2022年1月1号,21点26分58秒,1月1号是该星期的第6天,是该年即2022年的第1天,tm_isdst表示是否是夏令时.
import time
time.localtime()   # 不传入参数
# 结果返回的是现在的本地时间
time.struct_time(tm_year=2022, tm_mon=1, tm_mday=1, tm_hour=21, tm_min=38, tm_sec=34, tm_wday=5, tm_yday=1, tm_isdst=0)

读者可能会对struct_time对象中的属性有疑惑,所以下面会简单介绍一下各个属性的含义:

time模块中struct_time对象中的属性解释
属性名称
描述/含义
tm_year
年份
tm_month
月份,取值范围为[1,12]
tm_day
一个月中的第几天,取值范围为[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
是否为夏令时,取值为0, 1, -1

2.2 datetime模块

Python中内建的datetime模块提供了datetime、date、time、timedelta类型,其中datetime类型是包含日期和时间信息的,尤其需要注意的是,这些类的对象都是不可变的。建立datetime类型需要自己传入参数:

1) datetime

from datetime import datetime, date, time
dt = datetime(2022, 1, 1, 21, 30, 28) # 传入参数分别为年月日时分秒
dt
# 结果为
datetime.datetime(2022, 1, 1, 21, 30, 28)

对于上面得到的datetime实例,可以使用它的对象方法来获取它的date、time、year、month等对象:

dt.time()
# 结果为 datetime.time(21, 30, 28)
dt.date()
# 结果为 datetime.date(2022, 1, 1)
print(dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second)
# 结果为 2022 1 1 21 30 28

2) strftime、strptime函数

? strftime方法将datetime转换为字符串,该方法需要你传入你想要的字符串格式:

dt.strftime('%m/%d/%Y %H:%M')
# 结果为
'01/01/2022 21:30'
dt.strftime('%Y-%m-%d %H:%M:%S')
# 结果为
'2022-01-01 21:30:28'

strftime方法将字符串转换为datetime,需要传入字符串及其对应的格式:

datetime.strptime('20220101213028', '%Y%m%d%H%M%S')
# 结果为
datetime.datetime(2022, 1, 1, 21, 30, 28)
datetime.strptime('2022-01-01 21:30:28', '%Y-%m-%d %H:%M:%S')
# 结果为
datetime.datetime(2022, 1, 1, 21, 30, 28)

下面表格是完整的格式化详细说明

Datetime格式化详细说明
类型
描述
%Y
四位的年份
%y
两位的年份
%m
两位的月份,取值范围为[01, 12]
%d
两位的天数值,取值范围为[01, 31]
%H
小时值(24小时制), 取值范围为[00, 23]
%I
小时值(12小时制), 取值范围为[01, 12]
%M
两位数的分钟值,取值范围为[00, 59]
%S
秒值,取值范围为[00, 61](60、61用于区分闰秒)
%w
星期值,取值范围为[0, 6],0表示星期天
%U
一年中第几个星期的值,取值范围为[00, 53];星期天是每周第一天,第一个星期天前的一周是第0个星期
%W
一年中第几个星期的值,取值范围为[00, 53];星期一是每周第一天,第一个星期一前的一周是第0个星期
%z
UTC时区偏置,格式为+HHMM或-HHMM;如果是简单时区则为空
%F
%Y-%m-%d的简写(例如2022-1-1)
%D
%m/%d/%y的简写(例如1/1/22)

3) datetime.replace

在聚合或分组时间序列数据时,常常会将datatime时间序列中的一些值进行替换,如将分钟、秒替换为0,此时就需要用到datetime.replace()函数了:

# 具体参数如下
replace(
        year=self.year, 
        month=self.month, 
        day=self.day, 
        hour=self.hour, 
        minute=self.minute, 
        second=self.second, 
        microsecond=self.microsecond, 
        tzinfo=self.tzinfo, 
        * fold=0)

例子:

from datetime import datetime, date, time
dt = datetime(2022, 1, 1, 21, 30, 28).replace(minute=0,second=0)
# 结果为
datetime.datetime(2022, 1, 1, 21, 0)

4) datetime.timedelta

两个不同的datetime对象会产生一个datetime.timedelta类型的对象,表示两个时间之间的差值:

from datetime import datetime, date, time
dt1 = datetime(2022, 1, 1, 21, 30, 28) # 传入参数分别为年月日时分秒
dt2 = datetime(2021, 12, 31, 20, 10, 1) 
delta = dt1 - dt2
delta
# 结果为
datetime.timedelta(1, 4827)
# 表示时间间隔为1天又4827秒

当然也可以给一个datetime.datetime对象加上 datetime.timedelta,生成新的datetime.datetime对象:

dt2 + delta
# 结果为
datetime.datetime(2022, 1, 1, 21, 30, 28)

日期和时间就介绍到这里,下篇文章我将介绍Python数据结构中的元组

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-01-03 16:05:23  更:2022-01-03 16:05:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 1:29:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码