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 ...
随机推荐
- 从ClickHouse通往MySQL的几条道路
一.应用背景简介 ClickHouse 是 Yandex(俄罗斯最大的搜索引擎)开源的一个用于实时数据分析的基于列存储的数据库,其处理数据的速度比传统方法快 100-1000 倍.ClickHouse ...
- Tensorflow2.0实战之Auto-Encoder
autoencoder可以用于数据压缩.降维,预训练神经网络,生成数据等等 Auto-Encoder架构 需要完成的工作 需要完成Encoder和Decoder的训练 例如,Mnist的一张图片大小为 ...
- SpringBoot整合Liquibase
1.是什么? Liquibase官网 Liquibase是一个开源的数据库管理工具,可以帮助开发人员管理和跟踪数据库变更.它可以与各种关系型数据库和NoSQL数据库一起使用,并提供多种数据库任务自动化 ...
- 1、GO语言入门-环境准备
1.Windows开发环境准备 (1)Golang编译器下载 golang中文网:https://studygolang.com/dl 或者:https://go.dev/dl/ (2)下载解压,找到 ...
- 基于.NetCore开发博客项目 StarBlog - (30) 实现评论系统
前言 时隔五个月,终于又来更新 StarBlog 系列了~ 这次是呼声很大的评论系统. 由于涉及的代码量比较大,所以本文不会贴出所有代码,只介绍关键逻辑,具体代码请同学们自行查看 GitHub 仓库. ...
- 超轻量级MP4封装方法介绍
liwen01 2023.12.17 前言 MP4是目前非常常用的一种视频封装格式,关于MP4的介绍资料也非常多.我们常用的封装库或工具有:ffmpeg,libmp4v2,GPAC,MP4.js,它们 ...
- libGDX游戏开发之游戏纹理精灵切割(十六)
libGDX游戏开发之游戏纹理精灵切割(十六) libGDX系列,游戏开发有unity3D巴拉巴拉的,为啥还用java开发?因为我是Java程序员emm-国内用libgdx比较少,多数情况需要去官网和 ...
- Cesium案例解析(十)——CZML点
目录 1. 概述 2. 案例 3. 结果 1. 概述 CZML是Cesium中用于描述动态图形场景的JSON格式,它们的关系类似于Google Earth与KML之间的关系,一般会认为KML是一种矢量 ...
- 云图说|华为云CodeArts Build,云端化的编译构建平台
阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 本文分享自华为云社区&l ...
- 深度解析9种ScheduledThreadPoolExecutor的构造方法
摘要:今天我们就来一起手撕ScheduledThreadPoolExecutor类的源代码. 本文分享自华为云社区<深度解析ScheduledThreadPoolExecutor类的源代码> ...