30例 | 一文搞懂python日期时间处理
前言
datetime是python的内置模块,用来处理日期和时间。
该模块常用的类有:
| 类名 | 功能说明 |
|---|---|
| date | 日期对象 |
| time | 时间对象 |
| datetime | 日期时间对象 |
| timedelta | 时间间隔 |
| tzinfo | 时区信息对象 |
本文旨在讲解datetime模块中datetime类的使用方法。datetime对象是 date 与 time 的结合体,涵盖了date和time对象的所有信息。
一、导入datetime类
第一步,先导入datetime类:
from datetime import datetime
二、构造datetime对象
datetime(2019,12,6,13,30,50)
# 输出 : datetime.datetime(2019, 12, 6, 13, 30, 50)
参数范围:
- \(MINYEAR <= year <= MAXYEAR\)
- \(1 <= month <= 12\)
- \(1 <= day <= 指定年月的天数\)
- \(0 <= hour < 24\)
- \(0 <= minute < 60\)
- \(0 <= second < 60\)
- \(0 <= microsecond < 1000000\)
实例:
datetime(2019,12,6,13,30,50)
# 输出 : datetime.datetime(2019, 12, 6, 13, 30, 50)
三、类方法
datetime.today()
返回本地区当前日期时间datetime对象
datetime.today()
# 输出 : datetime.datetime(2019, 12, 9, 13, 27, 54, 693978)
datetime.now(tz=None)
返回本地区当前日期时间datetime对象,可以添加时区tz 默认无时区时,返回结果和datetime.today()一致
datetime.now()
# 输出 : datetime.datetime(2019, 12, 9, 13, 27, 54, 693978)
datetime.utcnow()
返回UTC(同格林尼治时间)日期时间datetime对象
datetime.now()
# 输出 : datetime.datetime(2019, 12, 9, 13, 27, 54, 693978)
datetime.fromtimestamp(timestamp, tz=None)
返回给定时间戳的datetime对象,时区默认为空,返回当地日期时间,也可以指定时区
datetime.fromtimestamp(1575877756)
# 输出 : datetime.datetime(2019, 12, 9, 15, 49, 16)
想获取当前时间戳,可通过time模块的time方法实现:
import time
time.time()
# 输出:1575877756.4673727
datetime.utcfromtimestamp(timestamp)
返回给定时间戳的datetime对象,日期时间默认为UTC(同格林尼治时间)
datetime.fromtimestamp(1575877756)
# 输出 : datetime.datetime(2019, 12, 9, 7, 49, 16)
datetime.fromordinal(ordinal)
输入参数为天数,返回从公元0年开始计数的年、月、日datetime对象 比如输入参数为365,则返回1-12-31
datetime.fromordinal(365)
# 输出 : datetime.datetime(1, 12, 31, 0, 0)
datetime.combine(date, time, tzinfo=self.tzinfo)
拼接date和time对象,形成一个新的datetime对象 可以输入时区参数,否则默认为原time的时区
date_ = datetime.today().date()
time_ = datetime.today().time()
datetime.combine(date_,time_)
# 输出 : datetime.datetime(2019, 12, 9, 16, 12, 56, 914484)
datetime.strptime(date_string, format)
将格式化日期时间字符串,转换为datetime对象,可以转换日期、时间、日期时间
datetime.strptime('2019-11-05','%Y-%m-%d')
# 输出 : datetime.datetime(2019, 11, 5, 0, 0)
datetime.strptime('09:30:50','%H:%M:%S')
# 输出 : datetime.datetime(1900, 1, 1, 9, 30, 50)
datetime.strptime('2019-11-05 09:30:50','%Y-%m-%d %H:%M:%S')
# 输出 : datetime.datetime(2019, 11, 5, 9, 30, 50)
四、实例方法
datetime.date()
返回date对象
d = datetime(2019,12,6,13,30,50)
d.date()
# 输出 : datetime.date(2019, 12, 6)
datetime.time()
返回time对象
d = datetime(2019,12,6,13,30,50)
d.time()
# 输出 : datetime.time(13, 30, 50)
datetime.timestamp()
对于给定的 datetime对象返回时间戳
d = datetime(2019,12,6,13,30,50)
d.timestamp()
# 输出 : 1575610250.0
datetime.weekday()
返回星期几,星期一为 0,星期天为 6
d = datetime(2019,12,6,13,30,50)
d.weekday()
# 输出 : 4
datetime.isoweekday()
返回星期几,星期一为 1,星期天为 7
d = datetime(2019,12,6,13,30,50)
d.isoweekday()
# 输出 : 5
datetime.isocalendar()
返回数组:(年、第多少周、星期几)
d = datetime(2019,12,6,13,30,50)
d.isocalendar()
# 输出 : (2019, 49, 5)
datetime.ctime()
返回日期时间的字符串表示
d = datetime(2019,12,6,13,30,50)
d.ctime()
# 输出 : 'Fri Dec 6 13:30:50 2019'
datetime.strftime(date_string, format)
将datetime对象转换为格式化字符串
d = datetime.today()
datetime.strftime(d,'%Y-%m-%d %H:%M:%S')
# 输出 : '2019-12-09 16:32:18'
datetime.toordinal()
返回从公元0年到指定datetime的天数
d = datetime(2019,12,6,13,30,50)
d.toordinal()
# 输出 : 737399
五、类实例属性
datetime.year
返回给定datetime对象的年份
d = datetime(2019,12,6,13,30,50)
d.year
# 输出 : 2019
datetime.month
返回给定datetime对象的月份
d = datetime(2019,12,6,13,30,50)
d.month
# 输出 : 12
datetime.day
返回给定datetime对象的天数(一个月的某天)
d = datetime(2019,12,6,13,30,50)
d.day
# 输出 : 6
datetime.hour
返回给定datetime对象的小时数(一天的某时)
d = datetime(2019,12,6,13,30,50)
d.hour
# 输出 : 13
datetime.minute
返回给定datetime对象的分钟数(一小时的某分)
d = datetime(2019,12,6,13,30,50)
d.minute
# 输出 : 30
datetime.second
返回给定datetime对象的秒数(一分钟的某秒)
d = datetime(2019,12,6,13,30,50)
d.second
# 输出 : 50
datetime.microsecond
返回给定datetime对象的毫秒数(一分钟的某秒)
d = datetime(2019,12,6,13,30,50,3000)
d.microsecond
# 输出 : 3000
datetime.tzinfo
返回datetime对象的时区,前提是在创建datetime对象时需传入tzinfo参数,如果没有传入则返回值为None。
# 获取一个含有时区的datetime对象
import pytz
sh = pytz.timezone('Asia/Shanghai')
d = datetime(2018, 11, 1, hour=8, tzinfo=sh)
d.tzinfo
# 输出 : <DstTzInfo 'Asia/Shanghai' LMT+8:06:00 STD>
六、结论
本文介绍了datetime模块中datetime类的各种方法和属性,代码案例丰富,分门别类,方便使用时查找。
30例 | 一文搞懂python日期时间处理的更多相关文章
- 一文搞懂Python迭代器和生成器
很多童鞋搞不懂python迭代器和生成器到底是什么?它们之间又有什么样的关系? 这篇文章就是要用最简单的方式让你理解Python迭代器和生成器! 1.迭代器和迭代过程 维基百科解释道: 在Python ...
- 一文搞懂Python Unittest测试方法执行顺序
大家好~我是米洛! 欢迎关注我的公众号测试开发坑货,一起交流!点赞收藏关注,不迷路. Unittest unittest大家应该都不陌生.它作为一款博主在5-6年前最常用的单元测试框架,现在正被pyt ...
- 一文搞懂 Python 的模块和包,在实战中的最佳实践
最近公司有个项目,我需要写个小爬虫,将爬取到的数据进行统计分析.首先确定用 Python 写,其次不想用 Scrapy,因为要爬取的数据量和频率都不高,没必要上爬虫框架.于是,就自己搭了一个项目,通过 ...
- 一文搞懂Python可迭代、迭代器和生成器的概念
关于我 一个有思想的程序猿,终身学习实践者,目前在一个创业团队任team lead,技术栈涉及Android.Python.Java和Go,这个也是我们团队的主要技术栈. Github:https:/ ...
- 一文搞懂Python函数(匿名函数、嵌套函数、闭包、装饰器)!
Python函数定义.匿名函数.嵌套函数.闭包.装饰器 目录 Python函数定义.匿名函数.嵌套函数.闭包.装饰器 函数核心理解 1. 函数定义 2. 嵌套函数 2.1 作用 2.2 函数变量作用域 ...
- 一文搞懂Python中的所有数组数据类型
关于我 一个有思想的程序猿,终身学习实践者,目前在一个创业团队任team lead,技术栈涉及Android.Python.Java和Go,这个也是我们团队的主要技术栈. Github:https:/ ...
- 一文搞懂 Prometheus 的直方图
原文链接:一文搞懂 Prometheus 的直方图 Prometheus 中提供了四种指标类型(参考:Prometheus 的指标类型),其中直方图(Histogram)和摘要(Summary)是最复 ...
- Web端即时通讯基础知识补课:一文搞懂跨域的所有问题!
本文原作者: Wizey,作者博客:http://wenshixin.gitee.io,即时通讯网收录时有改动,感谢原作者的无私分享. 1.引言 典型的Web端即时通讯技术应用场景,主要有以下两种形式 ...
- 一文搞懂指标采集利器 Telegraf
作者| 姜闻名 来源|尔达 Erda 公众号 导读:为了让大家更好的了解 MSP 中 APM 系统的设计实现,我们决定编写一个<详聊微服务观测>系列文章,深入 APM 系统的产品.架构 ...
- 一文搞懂Flink Window机制
Windows是处理无线数据流的核心,它将流分割成有限大小的桶(buckets),并在其上执行各种计算. 窗口化的Flink程序的结构通常如下,有分组流(keyed streams)和无分组流(non ...
随机推荐
- 如何给el-table中某一列加指定内容和点击事件
背景: 小颖最近在写项目时遇到了要给 element-ui 中的 el-table 在 v-for el-table-column 标签时给某列加内容和点击事件,项目忙完了想着总结一下,下面一起 ...
- [洛谷P8867] [NOIP2022] 建造军营
[NOIP2022] 建造军营 题目描述 A 国与 B 国正在激烈交战中,A 国打算在自己的国土上建造一些军营. A 国的国土由 \(n\) 座城市组成,\(m\) 条双向道路连接这些城市,使得任意两 ...
- C++学习笔记六:运算符(五种基本运算操作,优先级和结合性)
这一章对操作符进行简单的总结: 1.五种基本运算类型:加减乘除,取余 add, substract, multiply, divide, modulus int number1{2}; int num ...
- 【UniApp】-uni-app-传递数据
前言 好,经过上个章节的介绍完毕之后,了解了一下 uni-app-路由 那么了解完了uni-app-路由之后,这篇文章来给大家介绍一下 uni-app-路由传递数据 路由传参怎么传,是不是可以从 A ...
- Salesforce LWC学习(四十七) 标准页面更新以后自定义页面如何捕捉?
本篇参考: https://developer.salesforce.com/docs/atlas.en-us.platform_events.meta/platform_events/platfor ...
- vscode快速配置汇编环境
微机原理的课程需要,简单快速记录环境的搭建 找到并安装插件masm. MASM/TASM的汇编工具默认是tasm这样就无法在vscode终端进行debug,打开插件设置如下修改: 测试代码实现小写字母 ...
- 华硕AX系列路由器选购,以及华硕WIFI6路由器智能设备家电无法互联的解决方法。
家里昨天换了一整套wifi6路由器(华硕AX82U+XD4R),刚刚换上就发现原来的欧普智能灯和部分其他设备无法使用了,而小米等设备等都可以互联,智能家居绝大部分用的是2.4G的协议,所以说,问题出现 ...
- linux内核initcall放置在各个section中函数执行流程
前言 linux以及嵌入式一些代码,我们看到core_initcall.device_initcall等等需要链接器分配各个section,并且在启动该模块时候执行.下面我们详细追溯一下执行过程. 作 ...
- CMU DLSys 课程笔记 2 - ML Refresher / Softmax Regression
CMU DLSys 课程笔记 2 - ML Refresher / Softmax Regression 本节 Slides | 本节课程视频 这一节课是对机器学习内容的一个复习,以 Softmax ...
- 元数据管理平台对比预研 Atlas VS Datahub VS Openmetadata
大家好,我是独孤风.元数据管理平台层出不穷,但目前主流的还是Atlas.Datahub.Openmetadata三家,那么我们该如何选择呢? 本文就带大家对比一下.要了解元数据管理平台,先要从架构说起 ...