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

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

无人机侦测与反制技术的进展与应用

国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机&#xff08;无人驾驶飞行器&#xff0c;UAV&#xff09;技术的快速发展&#xff0c;其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统&#xff0c;无人机的“黑飞”&…...

安卓基础(Java 和 Gradle 版本)

1. 设置项目的 JDK 版本 方法1&#xff1a;通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分&#xff0c;设置 Gradle JDK 方法2&#xff1a;通过 Settings File → Settings... (或 CtrlAltS)…...

Python竞赛环境搭建全攻略

Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型&#xff08;算法、数据分析、机器学习等&#xff09;不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...

Axure 下拉框联动

实现选省、选完省之后选对应省份下的市区...

Spring Boot + MyBatis 集成支付宝支付流程

Spring Boot MyBatis 集成支付宝支付流程 核心流程 商户系统生成订单调用支付宝创建预支付订单用户跳转支付宝完成支付支付宝异步通知支付结果商户处理支付结果更新订单状态支付宝同步跳转回商户页面 代码实现示例&#xff08;电脑网站支付&#xff09; 1. 添加依赖 <!…...

【HarmonyOS 5】鸿蒙中Stage模型与FA模型详解

一、前言 在HarmonyOS 5的应用开发模型中&#xff0c;featureAbility是旧版FA模型&#xff08;Feature Ability&#xff09;的用法&#xff0c;Stage模型已采用全新的应用架构&#xff0c;推荐使用组件化的上下文获取方式&#xff0c;而非依赖featureAbility。 FA大概是API7之…...

云原生安全实战:API网关Envoy的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关 作为微服务架构的统一入口&#xff0c;负责路由转发、安全控制、流量管理等核心功能。 2. Envoy 由Lyft开源的高性能云原生…...

【PX4飞控】mavros gps相关话题分析,经纬度海拔获取方法,卫星数锁定状态获取方法

使用 ROS1-Noetic 和 mavros v1.20.1&#xff0c; 携带经纬度海拔的话题主要有三个&#xff1a; /mavros/global_position/raw/fix/mavros/gpsstatus/gps1/raw/mavros/global_position/global 查看 mavros 源码&#xff0c;来分析他们的发布过程。发现前两个话题都对应了同一…...