Python-datetime、time包常用功能汇总
目录
- 基础知识
- 时间格式有哪些?
- Python中的时间格式化
- 时间戳
- datetime
- date
- datetime
- timedelta
- time
- 常用
- 获取今天凌晨字符串?
- 将一个时间格式的字符串转为时间戳
- 将一个时间戳转为指定格式的字符串
- 全部代码
- 参考
基础知识
时间格式有哪些?
- 「格林威治标准时间」(Greenwich Mean Time,简称G.M.T.)以伦敦格林威治的子午线为基线,以地球自转为标准,全球都以此标准设定时间。
- 世界协调时(Coordinated Universal Time,简称UTC)又称世界标准时间或世界协调时间,是最主要的世界时间标准,在时刻上尽量接近于格林尼治标准时间。对于大多数用途来说,UTC时间被认为能与GMT时间互换,基本相等,但GMT时间已不再被科学界所确定
- 中国标准时间(CST):中国大陆、中国香港、中国澳门、中国台湾、蒙古国、新加坡、马来西亚、菲律宾、西澳大利亚州的时间与UTC的时差均为+8,也就是UTC+8
- ISO 8601 标准时间:在 ISO 8601 的表示中,日期和时间按照这样的顺序排列:大的单位(比如年)放在左边,小的单位依次往右排列。表示只能由阿拉伯数字和指定的特殊字符(比如"-“, “:”, “T”, “W”, “Z”)等组成,这样的话,日常常用的描述性的单词(比如"January”, “Thursday”, or “New Year’s Day”)是不允许使用的
Python中的时间格式化
日期时间格式是指转为字符串时的格式化,可以自定义,有很多种,常见的有
- UTC时间格式:“yyyy-mm-ddThh:mm:ssZ”,在Python中是"%Y-%m-%dT%H:%M:%SZ"
- 本地时间格式:“yyyy-mm-dd hh:mm:ss”,在Python中是"%Y-%m-%d %H:%M:%S"
- 汉字表示格式:“yyyy年mm月dd日 hh时mm分ss秒”,在Python中是“%Y年%m月%d日 %H时%M分%S秒”
指令 | 含意 | 示例 | 备注 |
|---|---|---|---|
| 当地工作日的缩写。 | Sun, Mon, ..., Sat (en_US); So, Mo, ..., Sa (de_DE) | (1) |
| 本地化的星期中每日的完整名称。 | Sunday, Monday, ..., Saturday (en_US); Sonntag, Montag, ..., Samstag (de_DE) | (1) |
| 以十进制数显示的工作日,其中0表示星期日,6表示星期六。 | 0, 1, ..., 6 | |
| 补零后,以十进制数显示的月份中的一天。 | 01, 02, ..., 31 | (9) |
| 当地月份的缩写。 | Jan, Feb, ..., Dec (en_US); Jan, Feb, ..., Dez (de_DE) | (1) |
| 本地化的月份全名。 | January, February, ..., December (en_US); Januar, Februar, ..., Dezember (de_DE) | (1) |
| 补零后,以十进制数显示的月份。 | 01, 02, ..., 12 | (9) |
| 补零后,以十进制数表示的,不带世纪的年份。 | 00, 01, ..., 99 | (9) |
| 十进制数表示的带世纪的年份。 | 0001, 0002, ..., 2013, 2014, ..., 9998, 9999 | (2) |
| 以补零后的十进制数表示的小时(24 小时制)。 | 00, 01, ..., 23 | (9) |
| 以补零后的十进制数表示的小时(12 小时制)。 | 01, 02, ..., 12 | (9) |
| 本地化的 AM 或 PM 。 | AM, PM (en_US); am, pm (de_DE) | (1), (3) |
| 补零后,以十进制数显示的分钟。 | 00, 01, ..., 59 | (9) |
| 补零后,以十进制数显示的秒。 | 00, 01, ..., 59 | (4), (9) |
| 微秒作为一个十进制数,零填充到 6 位。 | 000000, 000001, ..., 999999 | (5) |
| UTC 偏移量,格式为 | (空), +0000, -0400, +1030, +063415, -030712.345216 | (6) |
| 时区名称(如果对象为简单型则为空字符串)。 | (空), UTC, GMT | (6) |
| 以补零后的十进制数表示的一年中的日序号。 | 001, 002, ..., 366 | (9) |
| 以补零后的十进制数表示的一年中的周序号(星期日作为每周的第一天)。 在新的一年中第一个星期日之前的所有日子都被视为是在第 0 周。 | 00, 01, ..., 53 | (7), (9) |
| 以补零后的十进制数表示的一年中的周序号(星期一作为每周的第一天)。 在新的一年中第一个星期一之前的所有日子都被视为是在第 0 周。 | 00, 01, ..., 53 | (7), (9) |
| 本地化的适当日期和时间表示。 | Tue Aug 16 21:30:00 1988 (en_US); Di 16 Aug 21:30:00 1988 (de_DE) | (1) |
| 本地化的适当日期表示。 | 08/16/88 (None); 08/16/1988 (en_US); 16.08.1988 (de_DE) | (1) |
| 本地化的适当时间表示。 | 21:30:00 (en_US); 21:30:00 (de_DE) | (1) |
| 字面的 | % |
时间戳
时间戳一般指的是Unix时间/POSIX时间,从1970-01-01 00:00:00到当前的秒数,一般使用10位或13表示
datetime
date
属性(只读)
- year:int类型,如2023
- month:int类型,如2
- day::int类型,如21
方法
- today:返回当前日期,转字符串使用iso格式,例如 2023-02-21
- fromtimestamp:从时间戳返回当地时间
- replace:返回一个date,可以通过参数修改year month day,会进行检查,不符合抛异常ValueError
- strftime:按照格式返回字符串
datetime
属性(只读)
- year:int类型,如2023
- month:int类型,如2
- day:int类型,如21
- hour:int类型,小时
- minute:int类型,分钟
- second:int类型,秒
- microsecond:int类型,毫秒
方法
- today、now:返回本地当前日期时间,例如,2023-02-21 21:09:07.915277
- utcnow:返回utc时间,即北京时间的8个小时前
- timestamp
- fromtimestamp:从时间戳获取本地时间
- utcfromtimestamp:从时间戳获取utc时间
- date:返回日期对象
- time:返回时间对象
- replace:返回一个datetime对象,可通过参数修改,会进行检查,不符合抛异常ValueError
- strftime:按照格式返回字符串
- strptime:返回一个对应于 date_string,根据 format 进行解析得到的 datetime 对象。
timedelta
timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0) 用于表示两个时间的间隔
用这个就比较方便,比如,计算昨天,自己写的话还要考虑月份的天数,这个直接减去即可
time
方法
- time:返回时间戳,float类型
- localtime:获得时间元组,secs参数可选,接受float
- mktime:这是 localtime() 的反函数,时间参数t,返回对应的一个float值
- sleep:程序睡眠,secs参数代表睡眠秒数
- strftime:返回指定format格式的字符串,t参数可选,默认为localtime返回的值
- strptime:将string按照指定格式解析,返回一个时间元组
常用
我们常常收到和发送的都是字符串,这里就以字符串处理为例
获取今天凌晨字符串?
def get_today_format(format="%Y-%m-%d 00:00:00"):str_time = datetime.today().strftime(format)return str_time
默认返回今天凌晨的字符串,可以修改格式
将一个时间格式的字符串转为时间戳
def get_time_stamp(str_time,format="%Y-%m-%dT%H:%M:%SZ") -> float:s_t = time.strptime(str_time,format)mkt = time.mktime(s_t) * 1000return mktdef get_date_time_stamp(str_time,format="%Y-%m-%dT%H:%M:%SZ") -> float:date_time = datetime.strptime(str_time,format)time_stamp = date_time.timestamp()*1000return time_stamp
将一个时间戳转为指定格式的字符串
def get_str_by_timestamp(timestamp=time.time(),format="%Y-%m-%d %H:%M:%S"):time_tuple = time.localtime(float(timestamp))str_time = time.strftime(format,time_tuple)return str_time
全部代码
from datetime import date,datetime,timedelta
import timelocal_format = "%Y-%m-%d %H:%M:%S"
utc_format = "%Y-%m-%dT%H:%M:%SZ"
chinese_format = "%Y年%m月%d日 %H时%M分%S秒"def date_test():year,month,day = date.today().year,date.today().month,date.today().dayprint(type(year),year,month,day)today = date.today()print(type(today), str(today))timestamp = date.today().fromtimestamp(datetime.now().timestamp())print(timestamp)today_but_28 = date.today().replace(day=28)print(today_but_28)today_format = today.strftime("%Y/%m/%d")print(today_format)date_time_format = datetime.strptime(today_format,"%Y/%m/%d")print(date_time_format)def datetime_test():today,now = datetime.today(),datetime.now()print(type(today),today,now)year,month,day= now.year,now.month,now.dayhour, minute, second = now.hour,now.minute,now.secondprint(type(year),year,month,day)print(type(hour),hour,minute,second)utcnow = datetime.utcnow()print(utcnow)date,time = now.date(),now.time()print(type(date),date)print(type(time),time)today_but_28 = now.replace(day=28,minute=59)print(today_but_28)today_format = now.strftime("%Y/%m/%d %H:%M:%S")print(today_format)def time_delta_test():one_day,one_hour = timedelta(days=1),timedelta(hours=1)yesterday_same_time = datetime.now() - one_dayone_hour_later = datetime.now() + one_hourprint(yesterday_same_time)print(one_hour_later)def time_test():time_stamp_float = time.time()print(time_stamp_float)s = time.localtime(time_stamp_float)print(s)time_float = time.mktime(s)print(time_float)local_str = time.strftime(local_format)print(local_str)default_format_time = time.strptime(local_str,local_format)print(default_format_time)time.sleep(1)def get_today_format(format="%Y-%m-%d 00:00:00"):str_time = datetime.today().strftime(format)return str_timedef get_time_stamp(str_time,format="%Y-%m-%dT%H:%M:%SZ") -> float:s_t = time.strptime(str_time,format)mkt = time.mktime(s_t) * 1000return mktdef get_date_time_stamp(str_time,format="%Y-%m-%dT%H:%M:%SZ") -> float:date_time = datetime.strptime(str_time,format)time_stamp = date_time.timestamp()*1000return time_stampdef get_str_by_timestamp(timestamp=time.time(),format="%Y-%m-%d %H:%M:%S"):time_tuple = time.localtime(float(timestamp))str_time = time.strftime(format,time_tuple)return str_timedef main():# date_test()# datetime_test()# time_delta_test()# time_test()# print(get_today_format())# print(get_time_stamp('2023-02-17T11:30:52Z'))# print(get_date_time_stamp('2023-02-17T11:30:52Z'))print(get_str_by_timestamp())if __name__ == '__main__':main()
截图如下:

思考:
- 使用datetime包完成 将一个时间戳转为指定格式的字符串
- 如何写一个函数,获取当前本地时间减去一个时间间隔的utc格式的字符串?
- 如何写一个函数,将时间格式字符串转为另一时间格式字符串?
参考
python - datetime
python - time
GMT、UTC、ISO、CST、timestamp 等格式
在线时间戳转换工具
相关文章:
Python-datetime、time包常用功能汇总
目录基础知识时间格式有哪些?Python中的时间格式化时间戳datetimedatedatetimetimedeltatime常用获取今天凌晨字符串?将一个时间格式的字符串转为时间戳将一个时间戳转为指定格式的字符串全部代码参考基础知识 时间格式有哪些? 「格林威治标…...
Spring MVC 源码- HandlerAdapter 组件(四)之 HandlerMethodReturnValueHandler
HandlerAdapter 组件HandlerAdapter 组件,处理器的适配器。因为处理器 handler 的类型是 Object 类型,需要有一个调用者来实现 handler 是怎么被执行。Spring 中的处理器的实现多变,比如用户的处理器可以实现 Controller 接口或者 HttpReques…...
2023面试必备:web自动化测试POM设计模式详解
1.背景 为UI页面写自动化测试用例时(如:web自动化、app自动化),使用普通的线性代码,测试用例中会存在大量的元素定位及操作细节,当UI界面变化时,测试用例也要跟着变化,在自动化测试…...
【人工智能 AI】Robotic Process Automation (RPA) 机器人流程自动化 (RPA)
目录 ROBOTIC PROCESS AUTOMATION SERVICES机器人流程自动化服务 What is RPA? 什么是机器人流程自动化?...
ubuntu/linux系统知识(37)systemd管理临时文件的方法systemd-tmpfiles
1、systemd-tmpfiles Linux产生大量的临时文件和目录,例如/tmp、/run 。systemd提供了一个结构化的可配置方法来管理临时文件和目录,即systemd-tmpfiles工具和配套的几个服务,以实现创建、删除和管理临时文件。 systemd创建了几个调用syste…...
云计算专业和计算机专业哪个好就业?
云计算专业其实也是属于计算机类专业呢,他包括了计算机硬件设备、计算机网络、磁盘柜、操作系统、中间件、数据库、服务器/虚拟机、应用软件开发等技术内容,云计算技术是以IT服务的形式面向用户的;所以云计算不是一门技术,而是众多…...
electron sha512 checksum mismatch
sha512 checksum mismatch错误 此错误常常发生在electron检查更新时,导致检查更新失败。 自动更新使用的模块 electron-updater or electron-differential-updater win下electron-builder打包 使用electron-builder打包之后,进行版本增量更新遇到的…...
使用Chemistry Development Kit (CDK) 来进行化学SMILES子结构匹配
摘要 SMILES是一种用于描述化合物结构的字符串表示法,其中子结构搜索是在大规模化合物数据库中查找特定的结构。然而,这种搜索方法存在一个误解,即将化合物的子结构视为一个独立的实体进行搜索,而忽略了它们在更大的化合物中的上…...
CMake模块的使用和自定义模块
CMake模块的使用和自定义模块一、前言二、使用Find模块2.1、准备工作2.2、添加头文件路径和库文件2.3、< name >_FOUND 来控制工程特性三、编写自定义的Find模块3.1、 准备工作3.2、cmake 模块3.3、使用自定义的FindHELLO 模块构建工程3.4、如果没有找到hello library四、…...
jvm调优参数配置
在JVM启动参数中,可以设置跟内存、垃圾回收相关的一些参数设置,默认情况不做任何设置JVM会工作的很好,但对一些配置很好的Server和具体的应用必须仔细调优才能获得最佳性能。通过设置我们希望达到一些目标: GC的时间足够的小 GC的…...
Leetcode.1567 乘积为正数的最长子数组长度
题目链接 Leetcode.1567 乘积为正数的最长子数组长度 Rating : 1710 题目描述 给你一个整数数组 nums,请你求出乘积为正数的最长子数组的长度。 一个数组的子数组是由原数组中零个或者更多个连续数字组成的数组。 请你返回乘积为正数的最长子数组长度…...
部分库与使用方法总结(自用)
1.tqdm tqdm是Python的进度条库,可以在长循环操作中显示进度提示 tqdm.tqdm:传入数字 from tqdm import tqdm for i in tqdm(range(1, 5)):print(i)使用bar_format "{l_bar}{bar}"可以只显示进度条 from tqdm import tqdm for i in tqdm(range(1, 5), ba…...
C++实现日期类
文章目录前言1.日期类的功能分析1.大致分析2.接口设计2.具体实现1.日期类的成员函数和成员变量2.初始化(构造函数)3.对日期进行天数推算4.比较相关的运算符重载5.前置后置自增或自减6.日期相减与流插入流提取1.日期相减2.重载流插入和流提取3.总结前言 之前介绍了C…...
想成为一名专业黑客,但不知道从哪里学起?我来教你。
成为一名黑客需要学什么? 想成为一名专业黑客,但不知道从哪里学起”很多人在后台问过这个问题,今天就为你介绍成为专业黑客必须学习的十个方面的知识,希望能为迷惘中的你指明方向。 想要成为网络hacker黑客?先来学习…...
VMware ESXi 7.0 U3k Unlocker OEM BIOS 集成网卡驱动和 NVMe 驱动 (集成驱动版)
ESXi 7 U3 标准版集成 Intel 网卡、USB 网卡 和 NVMe 驱动 请访问原文链接:https://sysin.org/blog/vmware-esxi-7-u3-sysin/,查看最新版。原创作品,转载请保留出处。 作者主页:www.sysin.org 本次针对 2023-02-21 发布的 ESXi …...
新的计算方法:预测益生菌在不同生长条件下的相互作用
谷禾健康 益生菌可以产生有益的维生素、消化酶、必需氨基酸、免疫调节和抗菌代谢产物,从而促进人体健康,预防肠道炎症性疾病、自身免疫性疾病和胃肠道感染。其宝贵特性已得到健康行业、医疗专业人士和公众的认可。 比起单菌株益生菌,多菌株益…...
python自学之《21天学通Python》(13)——第16章 数据库编程
数据库指的是以一定方式存储在一起、能为多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。而我们平时所说的数据库实际上是包含了数据库管理系统(DBMS)的,数据库管理系统是为管理数据库而设计的软件系统,它一…...
[架构之路-118]-《软考-系统架构设计师》-软架构设计-11-可靠性相关设计
第11节 可靠性相关设计11.1 可靠性基本概念可靠性工程是研究产品生命周期中故障的发生、发展规律,达到预防故障,消灭故障,提高产品可用性的工程技术。信息系统的可靠性是指系统在满足一定条件的应用环境中能够正常工作的能力,可以…...
电阻串联的作用
电阻串联常见作用 第一个作用是:阻抗匹配: 因为信号源的阻抗很低,跟信号线之间阻抗不匹配,串上一个电阻后,可以改善匹配情况,以减少反射,避免振荡等。 常见的阻抗匹配方法 1、使用变压器来做…...
leetcode 1675. Minimize Deviation in Array(最小化数组偏差)
数组里面有n个正整数,里面的数字可以无限次进行如下操作: 1.偶数可以除以2 2.奇数可以乘以2 数组中任意两元素差的最大值称为偏差。 把数组中的元素进行上面2种操作,使偏差最小。 思路: 数组中现有2种数字,一种是奇数…...
终极指南:用OpenCore Legacy Patcher让旧Mac焕发新生的5个简单步骤
终极指南:用OpenCore Legacy Patcher让旧Mac焕发新生的5个简单步骤 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 你是否还在为手中的旧款Mac无法…...
新手福音:基于预置镜像,在快马平台零配置开启Python Web开发之旅
作为一个刚接触Python Web开发的新手,我最近在InsCode(快马)平台上体验了一把零配置搭建个人博客的过程。不得不说,这种基于预置镜像的开发方式,简直是为我们这些初学者量身定制的福音。下面我就来分享一下这次的学习心得。 为什么选择预置镜…...
5分钟搞定OpenCV摄像头实时监控(附Jupyter避坑指南)
5分钟搞定OpenCV摄像头实时监控(附Jupyter避坑指南) 在计算机视觉领域,实时摄像头监控是最基础也最实用的功能之一。无论是安防监控、人脸识别还是简单的视频采集,OpenCV都提供了简洁高效的接口。但对于Python初学者和Jupyter Not…...
像素剧本圣殿新手指南:RPG对话框系统理解AI输出逻辑与修改技巧
像素剧本圣殿新手指南:RPG对话框系统理解AI输出逻辑与修改技巧 1. 认识像素剧本圣殿的RPG对话框系统 像素剧本圣殿的RPG对话框系统是其最具特色的交互界面,它模拟了经典像素游戏中NPC对话的场景。这个系统不仅仅是视觉上的复古设计,更是AI剧…...
从Prompt到Agent:收藏这份LLM应用落地演进指南,小白程序员必备!
本文介绍了LLM应用落地的演进过程,从最初的Prompt工程阶段,到Chain编排阶段,再到最新的Agent阶段。文章详细阐述了每个阶段的原理、优缺点及应用实例,并提供了基于Golang的Agent实现示例。通过学习本文,读者可以了解LL…...
从三角函数到雷达滤波:三角窗的DSP实现与性能测试全记录
从三角函数到雷达滤波:三角窗的DSP实现与性能测试全记录 1. 三角窗的数学本质与信号处理价值 在数字信号处理领域,窗函数就像是一位精密的调音师,能够对原始信号进行细致的修饰和调整。三角窗作为其中最基础却又最富特色的成员之一࿰…...
计算机毕业设计:汽车销售数据采集分析系统 Flask框架 requests爬虫 可视化 数据分析 大数据 机器学习 大模型(建议收藏)✅
博主介绍:✌全网粉丝50W,前互联网大厂软件研发、集结硕博英豪成立软件开发工作室,专注于计算机相关专业项目实战6年之久,累计开发项目作品上万套。凭借丰富的经验与专业实力,已帮助成千上万的学生顺利毕业,…...
PingFangSC字体:跨平台专业中文排版的终极开源解决方案
PingFangSC字体:跨平台专业中文排版的终极开源解决方案 【免费下载链接】PingFangSC PingFangSC字体包文件、苹果平方字体文件,包含ttf和woff2格式 项目地址: https://gitcode.com/gh_mirrors/pi/PingFangSC 在当今数字化时代,跨平台字…...
LC_numStream:嵌入式轻量级数字流解析库
1. LC_numStream 库概述:面向嵌入式通信的轻量级数字流解析工具LC_numStream 是一个专为资源受限嵌入式系统设计的纯 C 语言文本数字流解析库。其核心定位并非通用字符串处理,而是解决嵌入式设备在串口、UART、I2C、SPI 或自定义协议通信中高频出现的一类…...
【昇腾实战】MindIE框架下DeepSeek-R1模型部署与性能调优指南
1. 昇腾环境准备与驱动安装 拿到昇腾服务器后,第一件事就是搭建基础运行环境。我遇到过不少开发者卡在驱动安装环节,其实只要注意几个关键点就能避坑。首先到华为昇腾官网下载对应版本的驱动和固件包,这里有个细节:一定要核对服务…...
