当前位置: 首页 > 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.…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

React Native 导航系统实战(React Navigation)

导航系统实战&#xff08;React Navigation&#xff09; React Navigation 是 React Native 应用中最常用的导航库之一&#xff0c;它提供了多种导航模式&#xff0c;如堆栈导航&#xff08;Stack Navigator&#xff09;、标签导航&#xff08;Tab Navigator&#xff09;和抽屉…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

04-初识css

一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文&#xff5c;DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色&#xff0c;华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型&#xff0c;能助力我们轻松驾驭 DeepSeek-V3/R1&#xff0c;本文中将分享如何…...

Typeerror: cannot read properties of undefined (reading ‘XXX‘)

最近需要在离线机器上运行软件&#xff0c;所以得把软件用docker打包起来&#xff0c;大部分功能都没问题&#xff0c;出了一个奇怪的事情。同样的代码&#xff0c;在本机上用vscode可以运行起来&#xff0c;但是打包之后在docker里出现了问题。使用的是dialog组件&#xff0c;…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案&#xff1a;Java 字节码技术实战分享&#xff08;仅供学习&#xff09; 一、Aspose.PDF 简介二、说明&#xff08;⚠️仅供学习与研究使用&#xff09;三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...