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 类
表示两个时间的时间差,date 或 datetime 相减能够得到一个 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 类定义的类属性:
- timedelta.min:时间间隔对象的最小值,即 timedelta(-999999999).
- timedelta.max:时间间隔对象的最大值,即 timedelta(days=999999999, hours=23, minutes=59, seconds=59, microseconds=999999).
- 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.htmhttp://www.liujiangblog.com/course/python/69
相关文章:
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…...
linux安装编译ffmpeg
ffmpeg下载:http://ffmpeg.org/releases可以下载适合自己的版本。我下载的是5.0版本,然后解压:tar xvf ffmpeg-5.0.tar.gz进入ffmpegcd ffmpeg-5.0编译ffmpeg./configure --prefix/root/ffmpeg //编译文件存放的路径如果是交叉编译添加以下参…...
嵌入式Linux驱动开发(二)LED驱动
1. Linux下LED驱动原理 与裸机区别在于,编写驱动要符合linux驱动框架规范。裸机直接对寄存器物理地址进行读写,linux下需要经过MMU。 1.1 地址映射相关概念 1)MMU(Memory Manage Unit - 内存管理单元): …...
C++学习
强制转换运算符 C 引入了四种不同的强制转换运算符以进行强制转换: const_caststatic_castreinterpret_castdynamic_cast C语言强制类型转换缺点: 主要是为了克服C语言强制类型转换的以下三个缺点。 没有从形式上体现转换功能和风险的不同。 例如&am…...
JavaEE简单示例——依赖注入
简单介绍: 首先我们要知道,依赖注入就是赋值,带着这句话去理解依赖注入就非常的简单了,将文中所有的依赖注入全部脑部替换成给属性赋值,再去理解依赖注入的概念。 依赖注入(DI)是指IoC容器在运…...
大数据框架之Hive: 第7章 综合案例练习(初级)
第7章 综合案例练习(初级) 一 环境准备 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,kafka可视化工具选择kafka-eagle。所以要装的组件有:jdk、zookeeper、kafka、kafka-eagle一、安装jdk下载linux版本的jdk包,比如:jdk-8u192-linux-x64.tar.gz。将其复制到 /opt 目录下并解压&…...
springboot实现Hessian协议的RPC服务
背景 这段时间在公司接手了一个新项目,看到一段代码非常奇怪的,研究了好久。内容大概是这样 public void getUser (int id) {userService.getById(id); }当我点击这个方法进去的时候,我发现这个UserService类居然是导入jar包的一个接口&…...
2-6 SpringCloud快速开发入门: Eureka 服务注册中心发现与消费服务
接上一章节向Eureka 服务注册中心注册服务,这里讲讲Eureka 服务注册中心发现与消费服务 Eureka 服务注册中心发现与消费服务 我们已经搭建一个服务注册中心,同时也向这个服务注册中心注册了服务,接下来我们就可以发现和消费服务了࿰…...
Java-Web之s2-001与CommonsCollections
本文源自我个人入坑Java-Web安全的一点小经验,献给那些看得懂java代码但不知道从哪里入手代审的师傅们:) Struts2之s2-001 环境配置 说说环境配置的问题,大多数人对漏洞复现的恐惧感还是来自于环境的配置,也许配了大…...
【JavaSE】数组的定义和使用(下)
数组的定义和使用(下)4. 数组练习4.1 模拟实现toString4.2 数组拷贝4.3 比较两个数组是否相同4.4 填充数组4.3 求数组中元素的平均值4.4 查找数组中指定元素(顺序查找)4.5 查找数组中指定元素(二分查找)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解决样式冲突问题的方法 前言: 1、React最终编译打包后都在一个html页面中,如果在两个组件中取一样类名分别引用在自身,那么后者会覆盖前者。 2、默认情况下,只要导入了组件,不管组件有没有显示在页面中&#x…...
Go项目(用户操作微服务)
简介 用户留言、收藏、修改收货地址等,统一放在用户操作微服务这里按照业务类型划分微服务表设计,三张表// 用户收藏 type UserFav struct {BaseModel// 联合索引 idx_user_goods,且唯一User int32 gorm:"type:int;index:idx_user_goo…...
Spring Boot统一功能处理
目录 一、统一用户登录权限验证 1.1 自定义拦截器 1.2 将自定义拦截器加入到系统配置 1.3 统一访问前缀 二、统一异常处理 三、统一数据格式返回 一、统一用户登录权限验证 1.1 自定义拦截器 拦截器是一个普通的类,需要实现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次全挂
我的情况 大概介绍一下个人情况,男,毕业于普通二本院校非计算机专业,18年跨专业入行测试,第一份工作在湖南某软件公司,做了接近4年的外包测试工程师,今年年初,感觉自己不能够再这样下去了&…...
AXI总线核心解读---基于官方文档
AXI总线 何处使用AXI ZYNQ异构芯片,内部总线使用的AXI总线纯FPGA的IP接口也要用高速接口,DDR(AXI、传统)等模块都有涉及到 什么是AXI总线 AXI的三种形式: AXI-FULL:高性能的存储器映射需求—可以256个以内发送 存储器…...
【Linux修炼】15.进程间通信
每一个不曾起舞的日子,都是对生命的辜负。 进程间通信进程间通信一.理解进程间通信1.1 什么是通信1.2 为什么要有通信1.3 如何进行进程间通信二.管道2.1 匿名管道2.2 匿名管道编码部分2.3 管道的特点2.4 如何理解命令行中的管道2.5 进程控制多个子进程三.命名管道3.…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...
JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...
vulnyx Blogger writeup
信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...
Golang——7、包与接口详解
包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...
路由基础-路由表
本篇将会向读者介绍路由的基本概念。 前言 在一个典型的数据通信网络中,往往存在多个不同的IP网段,数据在不同的IP网段之间交互是需要借助三层设备的,这些设备具备路由能力,能够实现数据的跨网段转发。 路由是数据通信网络中最基…...
