前言

datetime是python的内置模块,用来处理日期和时间。

该模块常用的类有:

类名 功能说明
date 日期对象
time 时间对象
datetime 日期时间对象
timedelta 时间间隔
tzinfo 时区信息对象

本文旨在讲解datetime模块中datetime类的使用方法。datetime对象是 date 与 time 的结合体,涵盖了datetime对象的所有信息。

一、导入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)

三、类方法

  1. datetime.today()

返回本地区当前日期时间datetime对象

datetime.today()
# 输出 : datetime.datetime(2019, 12, 9, 13, 27, 54, 693978)
  1. datetime.now(tz=None)

返回本地区当前日期时间datetime对象,可以添加时区tz 默认无时区时,返回结果和datetime.today()一致

datetime.now()
# 输出 : datetime.datetime(2019, 12, 9, 13, 27, 54, 693978)
  1. datetime.utcnow()

返回UTC(同格林尼治时间)日期时间datetime对象

datetime.now()
# 输出 : datetime.datetime(2019, 12, 9, 13, 27, 54, 693978)
  1. 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
  1. datetime.utcfromtimestamp(timestamp)

返回给定时间戳的datetime对象,日期时间默认为UTC(同格林尼治时间)

datetime.fromtimestamp(1575877756)
# 输出 : datetime.datetime(2019, 12, 9, 7, 49, 16)
  1. datetime.fromordinal(ordinal)

输入参数为天数,返回从公元0年开始计数的年、月、日datetime对象 比如输入参数为365,则返回1-12-31

datetime.fromordinal(365)
# 输出 : datetime.datetime(1, 12, 31, 0, 0)
  1. datetime.combine(date, time, tzinfo=self.tzinfo)

拼接datetime对象,形成一个新的datetime对象 可以输入时区参数,否则默认为原time的时区

date_ = datetime.today().date()
time_ = datetime.today().time()
datetime.combine(date_,time_)
# 输出 : datetime.datetime(2019, 12, 9, 16, 12, 56, 914484)
  1. 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)

四、实例方法

  1. datetime.date()

返回date对象

d = datetime(2019,12,6,13,30,50)
d.date()
# 输出 : datetime.date(2019, 12, 6)
  1. datetime.time()

返回time对象

d = datetime(2019,12,6,13,30,50)
d.time()
# 输出 : datetime.time(13, 30, 50)
  1. datetime.timestamp()

对于给定的 datetime对象返回时间戳

d = datetime(2019,12,6,13,30,50)
d.timestamp()
# 输出 : 1575610250.0
  1. datetime.weekday()

返回星期几,星期一为 0,星期天为 6

d = datetime(2019,12,6,13,30,50)
d.weekday()
# 输出 : 4
  1. datetime.isoweekday()

返回星期几,星期一为 1,星期天为 7

d = datetime(2019,12,6,13,30,50)
d.isoweekday()
# 输出 : 5
  1. datetime.isocalendar()

返回数组:(年、第多少周、星期几)

d = datetime(2019,12,6,13,30,50)
d.isocalendar()
# 输出 : (2019, 49, 5)
  1. datetime.ctime()

返回日期时间的字符串表示

d = datetime(2019,12,6,13,30,50)
d.ctime()
# 输出 : 'Fri Dec 6 13:30:50 2019'
  1. datetime.strftime(date_string, format)

datetime对象转换为格式化字符串

d = datetime.today()
datetime.strftime(d,'%Y-%m-%d %H:%M:%S')
# 输出 : '2019-12-09 16:32:18'
  1. datetime.toordinal()

返回从公元0年到指定datetime的天数

d = datetime(2019,12,6,13,30,50)
d.toordinal()
# 输出 : 737399

五、类实例属性

  1. datetime.year

返回给定datetime对象的年份

d = datetime(2019,12,6,13,30,50)
d.year
# 输出 : 2019
  1. datetime.month

返回给定datetime对象的月份

d = datetime(2019,12,6,13,30,50)
d.month
# 输出 : 12
  1. datetime.day

返回给定datetime对象的天数(一个月的某天)

d = datetime(2019,12,6,13,30,50)
d.day
# 输出 : 6
  1. datetime.hour

返回给定datetime对象的小时数(一天的某时)

d = datetime(2019,12,6,13,30,50)
d.hour
# 输出 : 13
  1. datetime.minute

返回给定datetime对象的分钟数(一小时的某分)

d = datetime(2019,12,6,13,30,50)
d.minute
# 输出 : 30
  1. datetime.second

返回给定datetime对象的秒数(一分钟的某秒)

d = datetime(2019,12,6,13,30,50)
d.second
# 输出 : 50
  1. datetime.microsecond

返回给定datetime对象的毫秒数(一分钟的某秒)

d = datetime(2019,12,6,13,30,50,3000)
d.microsecond
# 输出 : 3000
  1. 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>

参考:https://www.jianshu.com/p/7beff16c379d

六、结论

本文介绍了datetime模块中datetime类的各种方法和属性,代码案例丰富,分门别类,方便使用时查找。

30例 | 一文搞懂python日期时间处理的更多相关文章

  1. 一文搞懂Python迭代器和生成器

    很多童鞋搞不懂python迭代器和生成器到底是什么?它们之间又有什么样的关系? 这篇文章就是要用最简单的方式让你理解Python迭代器和生成器! 1.迭代器和迭代过程 维基百科解释道: 在Python ...

  2. 一文搞懂Python Unittest测试方法执行顺序

    大家好~我是米洛! 欢迎关注我的公众号测试开发坑货,一起交流!点赞收藏关注,不迷路. Unittest unittest大家应该都不陌生.它作为一款博主在5-6年前最常用的单元测试框架,现在正被pyt ...

  3. 一文搞懂 Python 的模块和包,在实战中的最佳实践

    最近公司有个项目,我需要写个小爬虫,将爬取到的数据进行统计分析.首先确定用 Python 写,其次不想用 Scrapy,因为要爬取的数据量和频率都不高,没必要上爬虫框架.于是,就自己搭了一个项目,通过 ...

  4. 一文搞懂Python可迭代、迭代器和生成器的概念

    关于我 一个有思想的程序猿,终身学习实践者,目前在一个创业团队任team lead,技术栈涉及Android.Python.Java和Go,这个也是我们团队的主要技术栈. Github:https:/ ...

  5. 一文搞懂Python函数(匿名函数、嵌套函数、闭包、装饰器)!

    Python函数定义.匿名函数.嵌套函数.闭包.装饰器 目录 Python函数定义.匿名函数.嵌套函数.闭包.装饰器 函数核心理解 1. 函数定义 2. 嵌套函数 2.1 作用 2.2 函数变量作用域 ...

  6. 一文搞懂Python中的所有数组数据类型

    关于我 一个有思想的程序猿,终身学习实践者,目前在一个创业团队任team lead,技术栈涉及Android.Python.Java和Go,这个也是我们团队的主要技术栈. Github:https:/ ...

  7. 一文搞懂 Prometheus 的直方图

    原文链接:一文搞懂 Prometheus 的直方图 Prometheus 中提供了四种指标类型(参考:Prometheus 的指标类型),其中直方图(Histogram)和摘要(Summary)是最复 ...

  8. Web端即时通讯基础知识补课:一文搞懂跨域的所有问题!

    本文原作者: Wizey,作者博客:http://wenshixin.gitee.io,即时通讯网收录时有改动,感谢原作者的无私分享. 1.引言 典型的Web端即时通讯技术应用场景,主要有以下两种形式 ...

  9. 一文搞懂指标采集利器 Telegraf

    作者| 姜闻名 来源|尔达 Erda 公众号 ​ 导读:为了让大家更好的了解 MSP 中 APM 系统的设计实现,我们决定编写一个<详聊微服务观测>系列文章,深入 APM 系统的产品.架构 ...

  10. 一文搞懂Flink Window机制

    Windows是处理无线数据流的核心,它将流分割成有限大小的桶(buckets),并在其上执行各种计算. 窗口化的Flink程序的结构通常如下,有分组流(keyed streams)和无分组流(non ...

随机推荐

  1. 如何给el-table中某一列加指定内容和点击事件

    背景: 小颖最近在写项目时遇到了要给  element-ui 中的  el-table 在 v-for  el-table-column 标签时给某列加内容和点击事件,项目忙完了想着总结一下,下面一起 ...

  2. [洛谷P8867] [NOIP2022] 建造军营

    [NOIP2022] 建造军营 题目描述 A 国与 B 国正在激烈交战中,A 国打算在自己的国土上建造一些军营. A 国的国土由 \(n\) 座城市组成,\(m\) 条双向道路连接这些城市,使得任意两 ...

  3. C++学习笔记六:运算符(五种基本运算操作,优先级和结合性)

    这一章对操作符进行简单的总结: 1.五种基本运算类型:加减乘除,取余 add, substract, multiply, divide, modulus int number1{2}; int num ...

  4. 【UniApp】-uni-app-传递数据

    前言 好,经过上个章节的介绍完毕之后,了解了一下 uni-app-路由 那么了解完了uni-app-路由之后,这篇文章来给大家介绍一下 uni-app-路由传递数据 路由传参怎么传,是不是可以从 A ...

  5. Salesforce LWC学习(四十七) 标准页面更新以后自定义页面如何捕捉?

    本篇参考: https://developer.salesforce.com/docs/atlas.en-us.platform_events.meta/platform_events/platfor ...

  6. vscode快速配置汇编环境

    微机原理的课程需要,简单快速记录环境的搭建 找到并安装插件masm. MASM/TASM的汇编工具默认是tasm这样就无法在vscode终端进行debug,打开插件设置如下修改: 测试代码实现小写字母 ...

  7. 华硕AX系列路由器选购,以及华硕WIFI6路由器智能设备家电无法互联的解决方法。

    家里昨天换了一整套wifi6路由器(华硕AX82U+XD4R),刚刚换上就发现原来的欧普智能灯和部分其他设备无法使用了,而小米等设备等都可以互联,智能家居绝大部分用的是2.4G的协议,所以说,问题出现 ...

  8. linux内核initcall放置在各个section中函数执行流程

    前言 linux以及嵌入式一些代码,我们看到core_initcall.device_initcall等等需要链接器分配各个section,并且在启动该模块时候执行.下面我们详细追溯一下执行过程. 作 ...

  9. CMU DLSys 课程笔记 2 - ML Refresher / Softmax Regression

    CMU DLSys 课程笔记 2 - ML Refresher / Softmax Regression 本节 Slides | 本节课程视频 这一节课是对机器学习内容的一个复习,以 Softmax ...

  10. 元数据管理平台对比预研 Atlas VS Datahub VS Openmetadata

    大家好,我是独孤风.元数据管理平台层出不穷,但目前主流的还是Atlas.Datahub.Openmetadata三家,那么我们该如何选择呢? 本文就带大家对比一下.要了解元数据管理平台,先要从架构说起 ...