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 ...
随机推荐
- GoFrame Goland插件
前言 GoFrame 是一款模块化.高性能.企业级的 Go 基础开发框架.GoFrame 是一款通用性的基础开发框架,是 Golang 标准库的一个增强扩展级,包含通用核心的基础开发组件,优点是实战化 ...
- URL安全的Base64算法
URL安全的Base64算法 base64是取3个字节(24位)的数据强行组成4个字节(32位)的数据做为一个分组,24位分成4个字节的话,每个字节分到6位,然后前面补两位0,然后这个字节的值位索引去 ...
- ElasticSearch之线程池
ElasticSearch节点可用的CPU核的数量,通常可以交给ElasticSearch来自行检测和判定,另外可以在``elasticsearch.yml`中显式指定.样例如下: node.proc ...
- ElasticSearch之cat master API
命令样例如下: curl -X GET "https://localhost:9200/_cat/master?v=true&pretty" --cacert $ES_HO ...
- Python 潮流周刊第 33 期(摘要)
本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...
- 太赞了!墙裂推荐这款网页版 Nginx 配置生成器,好用到爆!
之前民工哥也给大家介绍过一款Nginx配置生成器:强大!Nginx 配置在线一键生成"神器",不太了解的人可以去看一看. 最近民工哥又发现一款好用的网页版开源工具,同样它的功能也是 ...
- PySimpleGUI 使用浅谈
1. 背景 PySimpleGUI是一个简单易用的Python GUI库,它提供了一种直观且快速创建图形用户界面的方式. 2. 安装 pip install PySimpleGUI 3. PySimp ...
- Docker本地部署Firefox火狐浏览器并远程访问
Docker本地部署Firefox火狐浏览器并远程访问 Firefox是一款免费开源的网页浏览器,由Mozilla基金会开发和维护.它是第一个成功挑战微软Internet Explorer浏览器垄断地 ...
- three.js中帧缓存的使用
目录 1. 概述 2. 示例 2.1. 代码 2.2. 解析 3. 参考 1. 概述 在网上查阅了一下three.js关于帧缓存的使用,感觉很多都是关于three.js中后处理通道的使用的.后处理通道 ...
- C++篇:第六章_指针_知识点大全
C++篇为本人学C++时所做笔记(特别是疑难杂点),全是硬货,虽然看着枯燥但会让你收益颇丰,可用作学习C++的一大利器 六.指针 (一)指针规则 两个指针不能进行加法运算,因为指针是变量,其值是另一个 ...