当前位置: 首页 > news >正文

Python 模块之 datetime

datetime 对象格式化为字符串

标准转换格式符号:

%a 本地星期的短名称 如:Sun, Mon, ..., Sat (en_US); So, Mo, ..., Sa (de_DE)
%A 本地星期全名称 如 :Sunday, Monday, ..., Saturday (en_US);Sonntag, Montag, ..., Samstag (de_DE)
%w 星期的数字表示,0表示周日,6表示周六 如:0,1,2,,,6
%d 日的数字表示,并且使用0来填补(0-9),如:01, 02, ..., 31
%b 月份的短名称显示,英文单词简写,如:Jan, Feb, ..., Dec (en_US);Jan, Feb, ..., Dez (de_DE)
%B 月份的全名称显示,如:January, February, ..., December (en_US);Januar, Februar, ..., Dezember (de_DE)
%m 月份数字显示,并且用0来补全,如:01, 02, ..., 12
%y 年份的数字表示,两位表示,如:00, 01, ..., 99
%Y 年份的数字表示,四位表示,如:0001, 0002, ..., 2013, 2014, ..., 9998, 9999
%H 24小时制表示,如:00, 01, ..., 23
%I 12小时制表示,如:01, 02, ..., 12
%p 上下午的表示,如:AM,PM
%M 分钟,并且用0补全(0-9),如:00, 01, ..., 59
%S 秒钟,并且用0补全(0-9),如:00, 01, ..., 59
%f 微妙表示,如:000000, 000001, ..., 999999
%z 时区偏移量,如:(empty), +0000, -0400, +1030
%Z 时区名称,如:(empty), UTC, EST, CST
%j 全年中的哪一个,用0补全,如:001, 002, ..., 366
%U 全年中的第几个星期,sunday为第一天如:00, 01, ..., 53
%W 全年中的第几个星期,monday为第一天如:00, 01, ..., 53
%c 本地时间,如:06/24/17 15:43:10
%x 本地日期,如:08/16/88 (None);
%X 本地时间,如:21:30:00 (en_US);
%% %符号

示例:

from datetime import datetimedt = datetime.now()
st = datetime.strftime(dt, "%Y-%m-%d %H:%M:%S %p")		# 2019-11-08 15:48:25 PM
print(st)# 全年第几周,第几天
datetime.strftime(dt,'%Y-%m-%d %H:%M:%S %p %U %j') 		# 2019-11-08 15:51:27 PM 44 312

常用类

  • datetime.date:日期类
  • datetime.time:时间类
  • datetime.datetime:时间类
  • datetime.timedelta:时间间隔,两个时间点之间长度
  • datetime.tzinfo:时区相关

date 类

表示一个日期,由年、月、日组成。

参数范围:

  • year[1, 9999] 年,即 [MINYEAR, MAXYEAR]
  • month[1, 12],不是从 0 开始
  • day:根据月份而定

常用方法和属性

import datetimed = datetime.date
# 获取 date 对象能表示的最大、最小日期
>>> d.max
datetime.date(9999, 12, 31)# 日期最小单位(天)
d.resolution# 本地当前日期
>>> d.today()
datetime.date(2019, 11, 8)# 根据给定时间戳,返回一个 date 对象,此处用 time.time() 获取时间戳
d.fromtimestamp(time.time())# 将Gregorian日历时间转换为date对象,Gregorian 类似中国的农历
d.fromordinal(ordinal)

其他方法和属性:

import datetime>>> d = datetime.date.today()
# 获取当前时间的年、月、日,year、month、day
>>> d.year
2019# 替换时间,原对象不变
>>> d1 = d.replace(2018, 12, 30)
>>> d1
datetime.date(2018, 12, 30)
>>> d
datetime.date(2019, 11, 8)# 返回星期几,星期一为 0
>>> d.weekday()           
4                         
>>> d.isoweekday()        # 返回星期几,星期一为 1
5                         
>>> d.isocalendar()       # 元祖
(2019, 45, 5)             
>>> d.isoformat()         # 字符串
'2019-11-08'              
d.strftime(fmt)			 # 自定义格式化方式# 日期与日期间隔进行运算
>>> d + datetime.timedelta(2)		# 加 2 天
datetime.date(2019, 11, 10)

time 类

time 类表示时间,由时、分、秒、微妙组成。

参数:

  • hour:范围 0 - 24
  • minute:范围 0 - 60
  • second:0 - 60
  • microsecond(微秒):0 -1000000
  • tzinfo:表示时区信息
>>> d2 = datetime.time
>>> d2
<class 'datetime.time'>
>>> d2.min
datetime.time(0, 0)
>>> d2.max
datetime.time(23, 59, 59, 999999)
>>> d2.resolution
datetime.timedelta(0, 0, 1)

常用方法和属性

>>> d3 = datetime.time(21, 18, 19)
>>> d3.hour
21
d3.tzinfo				# 时区
d3.isoformat()			# 获取其字符串形式
d3.replace(hour=20)		# 替换
d3.strftime('%I:%M:%S %p')	# 字符串格式化(自定义格式)

datetime 类

常用属性和方法:

datetime.min、datetime.max:datetime		# 所能表示的最小值与最大值;
datetime.resolution		# datetime最小单位;
datetime.today()		# 返回一个表示当前本地时间的datetime对象;
datetime.now([tz])		# 返回一个表示当前本地时间的datetime对象,如果提供了参数tz,则获取tz参数所指时区的本地时间;
datetime.utcnow()		# 返回一个当前utc时间的datetime对象;
datetime.fromtimestamp(timestamp[, tz])	# 根据时间戮创建一个datetime对象,参数tz指定时区信息;
datetime.utcfromtimestamp(timestamp)	# 根据时间戮创建一个datetime对象;
datetime.combine(date, time)		# 根据date和time,创建一个datetime对象;
datetime.strptime(date_string, format)	# 将格式字符串转换为datetime对象,data 与 time 类没有提供该方法。

示例一:

>>> from datetime import datetime                   
>>> d = datetime.today()                            
>>> d                                               
datetime.datetime(2019, 11, 19, 17, 59, 42, 191504) 
>>> d.strftime('%Y-%m-%d')            	# 将当前时间格式化字符串              
'2019-11-19'                                        
>>> d.strptime('2019-11-19', '%Y-%m-%d')            

示例二:

>>> from datetime import datetime, timezone                                            
>>> datetime.today()                                                                   
datetime.datetime(2019, 11, 19, 18, 11, 35, 988223)                                    
>>> datetime.now()                                                                     
datetime.datetime(2019, 11, 19, 18, 11, 45, 630445)                                    
>>> datetime.now(timezone.utc)                                                         
datetime.datetime(2019, 11, 19, 10, 11, 58, 293658, tzinfo=datetime.timezone.utc)      
>>> datetime.utcnow()                                                                  
datetime.datetime(2019, 11, 19, 10, 12, 11, 356732)                                    
>>> import time                                                                        
>>> datetime.fromtimestamp(time.time())     # 时间戳转换为 datetime   	                           
datetime.datetime(2019, 11, 19, 18, 12, 39, 124737)                                    
>>> dt = datetime.now()                                                                
>>> dt.year                                                                            
2019                                                                                   
>>> dt.timestamp()                                                                     
1574158404.052619                                                                      
>>> dt.date()                                                                          
datetime.date(2019, 11, 19)                                                            
>>> dt.time()                                                                          
datetime.time(18, 13, 24, 52619)                                                       
>>> dt.replace(2018)                                                                   
datetime.datetime(2018, 11, 19, 18, 13, 24, 52619)                                     
>>> dt.toordinal()        # 返回日期是是自 0001-01-01 开始的第多少天                                    737382                                                                                 
>>> dt.weekday()         # 返回日期是星期几,[0, 6],0表示星期一                                        1                                                                                      
>>> dt.ctime()                                                                         
'Tue Nov 19 18:13:24 2019'                                                             

timedelta 类

表示两个时间的时间差,datedatetime 相减能够得到一个 timedelta

class datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)

所有参数可选,且默认都是0,参数的值可以是整数,浮点数,正数或负数。

  • millisecond(毫秒) 转换成 1000 microseconds(微秒)
  • minute 转换成 60 seconds
  • hour 转换成 3600 seconds
  • week转换成 7 days

三个参数的取值范围分别为:

  • 0 <= microseconds < 1000000
  • 0 <= seconds < 3600*24 (the number of seconds in one day)
  • -999999999 <= days <= 999999999

timedelta 类定义的类属性:

  1. timedelta.min:时间间隔对象的最小值,即 timedelta(-999999999).
  2. timedelta.max:时间间隔对象的最大值,即 timedelta(days=999999999, hours=23, minutes=59, seconds=59, microseconds=999999).
  3. timedelta.resolution:时间间隔的最小单位,即 timedelta(microseconds=1).

示例:

>>> from datetime import datetime
>>> from datetime import timedelta
>>> timedelta(365).total_seconds()		# 一年总共秒数
31536000.0
>>> dt = datetime.now()
>>> dt + timedelta(3)		# 三天后
datetime.datetime(2019, 11, 22, 18, 19, 31, 4088)	
>>> dt + timedelta(-3)		# 三天前
datetime.datetime(2019, 11, 16, 18, 19, 31, 4088)
>>> dt + timedelta(hours=-3)	# 三小时前
datetime.datetime(2019, 11, 19, 15, 19, 31, 4088)
>>> dt + timedelta(hours=-3, seconds=30)	# 三小时三十秒前
datetime.datetime(2019, 11, 19, 15, 20, 1, 4088)
>>> dt2 = dt + timedelta(hours=1, seconds=30)
>>> dt2
datetime.datetime(2019, 11, 19, 19, 20, 1, 4088)
>>> (dt2 - dt).seconds	# 计算秒数
3630

参考文档:

  • https://www.jb51.net/article/102941.htm
  • http://www.liujiangblog.com/course/python/69

相关文章:

Python 模块之 datetime

datetime 对象格式化为字符串 标准转换格式符号&#xff1a; %a 本地星期的短名称 如&#xff1a;Sun, Mon, ..., Sat (en_US); So, Mo, ..., Sa (de_DE) %A 本地星期全名称 如 &#xff1a;Sunday, Monday, ..., Saturday (en_US);Sonntag, Montag, ..., Samstag (de_DE) %w…...

linux安装编译ffmpeg

ffmpeg下载&#xff1a;http://ffmpeg.org/releases可以下载适合自己的版本。我下载的是5.0版本&#xff0c;然后解压&#xff1a;tar xvf ffmpeg-5.0.tar.gz进入ffmpegcd ffmpeg-5.0编译ffmpeg./configure --prefix/root/ffmpeg //编译文件存放的路径如果是交叉编译添加以下参…...

嵌入式Linux驱动开发(二)LED驱动

1. Linux下LED驱动原理 与裸机区别在于&#xff0c;编写驱动要符合linux驱动框架规范。裸机直接对寄存器物理地址进行读写&#xff0c;linux下需要经过MMU。 1.1 地址映射相关概念 1&#xff09;MMU&#xff08;Memory Manage Unit - 内存管理单元&#xff09;&#xff1a; …...

C++学习

强制转换运算符 C 引入了四种不同的强制转换运算符以进行强制转换&#xff1a; const_caststatic_castreinterpret_castdynamic_cast C语言强制类型转换缺点&#xff1a; 主要是为了克服C语言强制类型转换的以下三个缺点。 没有从形式上体现转换功能和风险的不同。 例如&am…...

JavaEE简单示例——依赖注入

简单介绍&#xff1a; 首先我们要知道&#xff0c;依赖注入就是赋值&#xff0c;带着这句话去理解依赖注入就非常的简单了&#xff0c;将文中所有的依赖注入全部脑部替换成给属性赋值&#xff0c;再去理解依赖注入的概念。 依赖注入&#xff08;DI&#xff09;是指IoC容器在运…...

大数据框架之Hive: 第7章 综合案例练习(初级)

第7章 综合案例练习&#xff08;初级&#xff09; 一 环境准备 1.1 建表语句 hive> -- 创建学生表 DROP TABLE IF EXISTS student; create table if not exists student_info(stu_id string COMMENT 学生id,stu_name string COMMENT 学生姓名,birthday string COMMENT 出…...

kafka:linux 安装 kafka集群

kafka运行依赖于 jdk、zookeeper&#xff0c;kafka可视化工具选择kafka-eagle。所以要装的组件有&#xff1a;jdk、zookeeper、kafka、kafka-eagle一、安装jdk下载linux版本的jdk包&#xff0c;比如&#xff1a;jdk-8u192-linux-x64.tar.gz。将其复制到 /opt 目录下并解压&…...

springboot实现Hessian协议的RPC服务

背景 这段时间在公司接手了一个新项目&#xff0c;看到一段代码非常奇怪的&#xff0c;研究了好久。内容大概是这样 public void getUser (int id) {userService.getById(id); }当我点击这个方法进去的时候&#xff0c;我发现这个UserService类居然是导入jar包的一个接口&…...

2-6 SpringCloud快速开发入门: Eureka 服务注册中心发现与消费服务

接上一章节向Eureka 服务注册中心注册服务&#xff0c;这里讲讲Eureka 服务注册中心发现与消费服务 Eureka 服务注册中心发现与消费服务 我们已经搭建一个服务注册中心&#xff0c;同时也向这个服务注册中心注册了服务&#xff0c;接下来我们就可以发现和消费服务了&#xff0…...

Java-Web之s2-001与CommonsCollections

本文源自我个人入坑Java-Web安全的一点小经验&#xff0c;献给那些看得懂java代码但不知道从哪里入手代审的师傅们&#xff1a;&#xff09; Struts2之s2-001 环境配置 说说环境配置的问题&#xff0c;大多数人对漏洞复现的恐惧感还是来自于环境的配置&#xff0c;也许配了大…...

【JavaSE】数组的定义和使用(下)

数组的定义和使用&#xff08;下&#xff09;4. 数组练习4.1 模拟实现toString4.2 数组拷贝4.3 比较两个数组是否相同4.4 填充数组4.3 求数组中元素的平均值4.4 查找数组中指定元素&#xff08;顺序查找&#xff09;4.5 查找数组中指定元素&#xff08;二分查找&#xff09;4.6…...

Oracle 实现对全局错误语句的审计监控 ORA- alert

--将所有数据库ora-错误写入表create table error_tab (username varchar2(4000), d_current_nr_error varchar2(4000), ora_server_error_msg varchar2(4000), full_text varchar2(4000),errdate date);create or replace trigger error_triggerafter servererror on database…...

React解决样式冲突问题的方法

React解决样式冲突问题的方法 前言&#xff1a; 1、React最终编译打包后都在一个html页面中&#xff0c;如果在两个组件中取一样类名分别引用在自身&#xff0c;那么后者会覆盖前者。 2、默认情况下&#xff0c;只要导入了组件&#xff0c;不管组件有没有显示在页面中&#x…...

Go项目(用户操作微服务)

简介 用户留言、收藏、修改收货地址等&#xff0c;统一放在用户操作微服务这里按照业务类型划分微服务表设计&#xff0c;三张表// 用户收藏 type UserFav struct {BaseModel// 联合索引 idx_user_goods&#xff0c;且唯一User int32 gorm:"type:int;index:idx_user_goo…...

Spring Boot统一功能处理

目录 一、统一用户登录权限验证 1.1 自定义拦截器 1.2 将自定义拦截器加入到系统配置 1.3 统一访问前缀 二、统一异常处理 三、统一数据格式返回 一、统一用户登录权限验证 1.1 自定义拦截器 拦截器是一个普通的类&#xff0c;需要实现HandlerInterceptor接口并重写pre…...

ETCD多次出现CONTEXT DEADLINE EXCEEDED

roothqa-master-01:~# etcdctl --endpoints$ETCD_ENDPOINTS member list --write-outtable {“level”:“warn”,“ts”:“2020-03-23T14:19:45.0330800”,“caller”:“clientv3/retry_interceptor.go:61”,“msg”:“retrying of unary invoker failed”,“target”:“endpoi…...

git 提交 多人开发避免冲突

代码正常提交 git add . git commit -m ‘备注信息’ git status 查看本地提交状态 git pull 拉取代码 git push origin master 指定远程仓库名和分支名 ‘’ 如果多人开发 A和B 提交避免冲突 B拉取代码修改内容直接提交后 A也修改了内容在git add / git commit / git pull / g…...

求职复盘:干了四年外包出来,面试5次全挂

我的情况 大概介绍一下个人情况&#xff0c;男&#xff0c;毕业于普通二本院校非计算机专业&#xff0c;18年跨专业入行测试&#xff0c;第一份工作在湖南某软件公司&#xff0c;做了接近4年的外包测试工程师&#xff0c;今年年初&#xff0c;感觉自己不能够再这样下去了&…...

AXI总线核心解读---基于官方文档

AXI总线 何处使用AXI ZYNQ异构芯片&#xff0c;内部总线使用的AXI总线纯FPGA的IP接口也要用高速接口&#xff0c;DDR&#xff08;AXI、传统&#xff09;等模块都有涉及到 什么是AXI总线 AXI的三种形式: AXI-FULL&#xff1a;高性能的存储器映射需求—可以256个以内发送 存储器…...

【Linux修炼】15.进程间通信

每一个不曾起舞的日子&#xff0c;都是对生命的辜负。 进程间通信进程间通信一.理解进程间通信1.1 什么是通信1.2 为什么要有通信1.3 如何进行进程间通信二.管道2.1 匿名管道2.2 匿名管道编码部分2.3 管道的特点2.4 如何理解命令行中的管道2.5 进程控制多个子进程三.命名管道3.…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中&#xff0c;iftop是网络管理的得力助手&#xff0c;能实时监控网络流量、连接情况等&#xff0c;帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...