详解Python中datetime库的使用
作者:程序喵正在路上 发布时间:2021-03-31 20:14:13
1. datetime 库概述
以不同格式显示日期和时间是程序中最常用到的功能。Python 提供了一个处理时间的标准函数库 datetime,它提供了一系列由简单到复杂的时间处理方法。
datetime 库可以从系统中获得时间,并以用户选择的格式输出。
datetime 库以格林威治时间为基础,每天由 3600X24 秒精准定义。该库包括两个常量:datetime.MINYEAR 与 datetime.MAXYEAR,分别表示 datetime 所能表示的最小、最大年份,值分别为 1 与 9999。
datetime 库以类的方式提供多种日期和时间表达方式。
(1) datetime.date:日期表示类,可以表示年、月、日等。
(2) datetime.time:时间表示类,可以表示小时、分钟、秒、毫秒等。
(3) datetime.dateime:日期和时间表示的类,功能覆盖 date 和 time 类。
(4) datetime.timedelta: 与时间间隔有关的类。
(5) datetime.tzinfo:与时区有关的信息表示类。
由于 datetime.daetime 类表达形式最为丰富,这里主要介绍这个类的使用。使用 datetime 类需要用 import 保留字,引用 datetime类的方式如下:
from datetime import datetime
2. 拓展: 1970年1月1日
当代计算机系统都有一个计时功能,能够输出从格林威治标准时间 1970 年 1 月 1 日 00:00:00 开始到当下的时间计数,精确到秒,这是 UNIX 操作系统早期的设计习惯,后沿用到所有计算机系统中。
现在的计算机硬件和系统都是 64 位,如果用 64 位存储这个时间计数则最大可以表示距离 1970 年 1 月 1 日开始的 264 秒,1 年 365 天的总秒数约为 1.9x224 ,因此,64 位计算机系统可以将时间表示到约公元 239 年,相信我们的 N 代子孙,哪怕到地球毁灭那天都不用担心时间不准确了。
——为什么选择从 1970 年 1 月 1 日开始? ——无论选择从哪天开始, 都会有同样的问题, 不是吗?
3. datetime 库解析
datetime 类 ( datetime.datetime 类,以下简称为 datetime 类) 的使用方式是首先创建一个 datetime 对象,然后通过对象的方法和属性显示时间。创建 datetime 对象有3种方法:datetime.now()、 datetime.utcnow() 和 datetime.datetime()。
1.使用 datetime.now() 获得当前日期和时间对象,使用方法如下:
datetime.now()
作用:返回一个 datetime 类型,表示当前的日期和时间,精确到微秒。 参数:无 调用该函数,执行结果如下:
from datetime import datetime
today = datetime.now()
print(today)
2022-05-01 20:32:41.772021
2.使用 datetime utcnow() 获得当前日期和时间对应的 UTC (世界标准时间) 时间对象,使用方法如下:
datetime.utcnow ()
作用:返回一个 datetime 类型,表示当前日期和时间的 UTC 表示,精确到微秒。 参数:无 调用该函数,执行结果如下:
from datetime import datetime
today = datetime.utcnow()
print(today)
2022-05-01 12:35:40.849860
3.datetime.now() 和 datetime utcnow() 都返回一个 datetime 类型的对象,也可以直接使用 datetime() 构造一个日期和时间对象, 使用方法如下:
datetime (year, month, day, hour=0, minute=0,second=0, microsecond=0)
作用:返回一个 datetime 类型,表示指定的日期和时间,可以精确到微秒。
参数如下:
year:指定的年份,MINYEAR <= year <= MAXYEAR
month:指定的月份,1 <= month <= 12
day:指定的日期,1 <= day <=月份所对应的日期上限
hour:指定的小时,0 <= hour < 24
minute:指定的分钟数,0 <= minute < 60
second:指定的秒数,0 <= second < 60
microsecond:指定的微秒数,0 <= microsecond < 1000000
其中,hour、minute、second、microsecond 参数可以全部或部分省略。
调用 datetime() 函数直接创建一个 datetime 对象,表示 2022 年 5 日 1 日 20:33,32 秒 7 微妙,执行结果如下:
from datetime import datetime
someday = datetime(2022, 5, 1, 20, 43, 32, 7)
print(someday)
2022-05-01 20:43:32.000007
到此,程序已经有了一个 datetime 对象,进一步可以利用这个对象的属性显示时间,为了区别 datetime 库名,采用上例中的 someday 代替生成的 datetime 对象,常用属性如下表所示。
属性 | 描述 |
someday.min | 固定返回 datetime 的最小时间对象,datetime(1,1,1,0,0) |
someday.max | 固定返回 datetime 的最大时间对象,datetime(9999,12,31,23,59,59,59,999999) |
someday.year | 返回 someday 包含的年份 |
someday.month | 返回 someday 包含的月份 |
someday.day | 返回 someday 包含的日期 |
someday.hour | 返回 someday 包含的小时 |
someday.minute | 返回 someday 包含的分钟 |
someday.second | 返回 someday 包含的秒钟 |
someday.microsecond | 返回 someday 包含的微妙值 |
datetime 对象有 3 个常用的时间格式化方法,如下表所示
属性 | 描述 |
someday.isoformat() | 采用 ISO 8601 标准显示时间 |
someday.isoweekday() | 根据日期计算星期后返回 1~7,对应星期一到星期日 |
someday.strftime(format) | 根据格式化字符串 format 进行格式显示的方法 |
isoformat() 和 isoweekday() 方法的使用如下:
from datetime import datetime
today = datetime.now()
print(today.isoformat())
print(today.isoweekday())
程序执行结果如下:
2022-05-01T21:00:28.392304
7
strftime() 方法是时间格式化最有效的方法,几乎可以以任何通用格式输出时间。例如下面的例子,用该方法输出特定格式时间。
from datetime import datetime
today = datetime.now()
print(today.strftime("%Y-%m-%d %H : %M : %S"))
程序执行结果如下:
2022-05-01 21 : 04 : 23
下表是 strftime() 方法的格式化控制符。
格式化字符串 | 日期/时间 | 值范围和实例 |
%Y | 年份 | 0001~9999 |
%m | 月份 | 01~12 |
%B | 月名 | January~December |
%b | 月名缩写 | Jan~Dec |
%d | 日期 | 01~31 |
%A | 星期 | Monday~Sunday |
%a | 星期缩写 | Mon~Sun |
%H | 小时(24 h 制) | 00~23 |
%M | 分钟 | 00~59 |
%S | 秒 | 00~59 |
%x | 日期 | 月/日/年,例如,01/01/2022 |
%X | 时间 | 时 :分:秒,例如,19 : 09 : 31 |
strftime() 格式化字符串的数字左侧会自动补零,上述格式也可以与 print() 的格式化函数起使用,例如:
from datetime import datetime
now = datetime.now()
print(now.strftime("%Y- %m- %d"))
print(now.strftime("%A,%d. %B %Y %H: %M%p"))
print("今天是 {0:%Y} 年 {0:%m} 月 {0:%d} 日".format(now))
程序执行结果如下:
2022- 05- 01
Sunday,01. May 2022 21: 21PM
今天是 2022 年 05 月 01 日
datetime 库主要用于对时间的表示,从格式化角度掌握 strftime() 函数已经能够处理很多情况了。建议读者在遇到需要处理时间的问题时采用 datetime 库,简化格式输出和时间的维护。  
来源:https://blog.csdn.net/weixin_62511863/article/details/124546626
猜你喜欢
- 1.案例要求:"""有列表["a", "d", "f&quo
- 让ASP搭配MYSQL所需要工具mysql-4.1.11-win32 myodbc-3.51.11-1-dll myodbc-3.51.11
- 最近开始实习,工作技术栈主要Python和Golang,目前的任务把Python模块重构为GO模块,然后出现了一个问题,就是要将一个结构体按
- 1. 使用 easy_installeasy_install 这应该是最古老的包安装方式了,目前基本没有人使用了。下面是 easy_inst
- 前言在MySQL中,我们可以通过EXPLAIN命令获取MySQL如何执行SELECT语句的信息,包括在SELECT语句执行过程中表如何连接和
- Python 语言里有许多(而且是越来越多)的高级特性,是 Python 发烧友们非常喜欢的。在这些人的眼里,能够写出那些一般开发者看不懂的
- 前言:发现这篇文章写的有点多,我总结一下整体思路:首先这个功能市面上挺多的,我是参考了几家公司的功能实现,发现他们的整体功能实现和下面我的截
- 本文实例讲述了python函数装饰器用法。分享给大家供大家参考。具体如下:装饰器经常被用于有切面需求的场景,较为经典的有插入日志、性能测试、
- 才发现做了这么多的博客和视频,居然从来没有系统地做过分类网络,做一个科学的分类网络,对身体好。源码下载分类网络的常见形式常见的分类网络都可以
- MySQL 读写分离在互联网项目中应该算是一个非常常见的需求了。受困于 Linux 和 MySQL 版本问题,很多人经常会搭建失败,今天松哥
- 实际上,在web开发中,cookie仅仅是一个文本文件,当用户访问站点时,它就被存储在用户使用的计算机上,其中,保存了一些信息,当用户日后再
- 前言滑块拼图验证码的失败难度在于每次图片上缺口位置不一样,需识别图片上拼图的缺口位置,使用python的OpenCV库来识别到环境准备pip
- python对PPT演示文档读写,是通过第三方库python-pptx实现的,python-pptx是用于创建和更新 PowerPoint(
- 原理中文分词,即 Chinese Word Segmentation,即将一个汉字序列进行切分,得到一个个单独的词。表面上看,分词其实就是那
- 一、含有一个装饰器#encoding: utf-8############含有一个装饰器#########def outer(func):
- 官方其实已经给出了方案,只不过藏的有点深,在加上网上有很多不太靠谱的帖子误导了我(当然不排除我没理解的原因哈)。所以为了让有些朋友的少走点弯
- 作为一个新世纪有思想有文化有道德时刻准备着的 * 丝男青年,在现在这样一个社会中,心疼我大慢播抵制大百度的前提下,没事儿上上网逛逛YY看看斗鱼翻
- 用采集程序的优点有:无须维护网站,因为采集程序中的数据来自其他网站,它将随着该网站的更新而更新;可以节省服务器资源,一般采集程序就几个文件,
- 定义一个banner.js文件,代码如下;window.requestAnimationFrame = window.requestAnim
- 官网文档http://www.yiiframework.com/doc-2.0/guide-structure-assets.htmlyii