Python-datetime、time包常用功能汇总

news/2024/3/29 6:55:15/文章来源:https://blog.csdn.net/lady_killer9/article/details/129149384

目录

  • 基础知识
    • 时间格式有哪些?
    • 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秒”

指令

含意

示例

备注

%a

当地工作日的缩写。

Sun, Mon, ..., Sat (en_US);
So, Mo, ..., Sa (de_DE)

(1)

%A

本地化的星期中每日的完整名称。

Sunday, Monday, ..., Saturday (en_US);
Sonntag, Montag, ..., Samstag (de_DE)

(1)

%w

以十进制数显示的工作日,其中0表示星期日,6表示星期六。

0, 1, ..., 6

%d

补零后,以十进制数显示的月份中的一天。

01, 02, ..., 31

(9)

%b

当地月份的缩写。

Jan, Feb, ..., Dec (en_US);
Jan, Feb, ..., Dez (de_DE)

(1)

%B

本地化的月份全名。

January, February, ..., December (en_US);
Januar, Februar, ..., Dezember (de_DE)

(1)

%m

补零后,以十进制数显示的月份。

01, 02, ..., 12

(9)

%y

补零后,以十进制数表示的,不带世纪的年份。

00, 01, ..., 99

(9)

%Y

十进制数表示的带世纪的年份。

0001, 0002, ..., 2013, 2014, ..., 9998, 9999

(2)

%H

以补零后的十进制数表示的小时(24 小时制)。

00, 01, ..., 23

(9)

%I

以补零后的十进制数表示的小时(12 小时制)。

01, 02, ..., 12

(9)

%p

本地化的 AM 或 PM 。

AM, PM (en_US);
am, pm (de_DE)

(1), (3)

%M

补零后,以十进制数显示的分钟。

00, 01, ..., 59

(9)

%S

补零后,以十进制数显示的秒。

00, 01, ..., 59

(4), (9)

%f

微秒作为一个十进制数,零填充到 6 位。

000000, 000001, ..., 999999

(5)

%z

UTC 偏移量,格式为 ±HHMM[SS[.ffffff]] (如果是简单型对象则为空字符串)。

(空), +0000, -0400, +1030, +063415, -030712.345216

(6)

%Z

时区名称(如果对象为简单型则为空字符串)。

(空), UTC, GMT

(6)

%j

以补零后的十进制数表示的一年中的日序号。

001, 002, ..., 366

(9)

%U

以补零后的十进制数表示的一年中的周序号(星期日作为每周的第一天)。 在新的一年中第一个星期日之前的所有日子都被视为是在第 0 周。

00, 01, ..., 53

(7), (9)

%W

以补零后的十进制数表示的一年中的周序号(星期一作为每周的第一天)。 在新的一年中第一个星期一之前的所有日子都被视为是在第 0 周。

00, 01, ..., 53

(7), (9)

%c

本地化的适当日期和时间表示。

Tue Aug 16 21:30:00 1988 (en_US);
Di 16 Aug 21:30:00 1988 (de_DE)

(1)

%x

本地化的适当日期表示。

08/16/88 (None);
08/16/1988 (en_US);
16.08.1988 (de_DE)

(1)

%X

本地化的适当时间表示。

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()

截图如下:
在这里插入图片描述

思考:

  1. 使用datetime包完成 将一个时间戳转为指定格式的字符串
  2. 如何写一个函数,获取当前本地时间减去一个时间间隔的utc格式的字符串?
  3. 如何写一个函数,将时间格式字符串转为另一时间格式字符串?

参考

python - datetime
python - time
GMT、UTC、ISO、CST、timestamp 等格式
在线时间戳转换工具

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_73794.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最新OpenMVG编译安装与逐命令运行增量式和全局式SfM教程

openmvg是一个轻便的可以逐步运行的SfM开源库,它同时实现了增量式和全局式两种算法。 说明文档地址:https://openmvg.readthedocs.io/en/latest/ github主页地址:https://github.com/openMVG/openMVG 1 编译安装 openmvg的安装比较简单&…

Windows 11 22H2 中文版、英文版 (x64、ARM64) 下载 (updated Feb 2023)

Windows 11, version 22H2,2023 年 2 月 更新 请访问原文链接:https://sysin.org/blog/windows-11/,查看最新版。原创作品,转载请保留出处。 作者主页:www.sysin.org 全新推出 Windows 11 全新 Windows 体验&#x…

论坛项目小程序和h5登录

项目中安装uview出现npm安装uview 直接报错:创建一个package.json配置文件在进行安装。cmd到项目。初始化一个package.json文件(vue项目的配置文件) npm init --yes 安装uview项目点击关注进入管页面,需要验证用户是否登录查用户是…

Linux学习(8)Linux文件与目录管理

以下内容转载自鸟哥的Linux私房菜 绝对路径与相对路径 绝对路径:路径的写法『一定由根目录 / 写起』,例如: /usr/share/doc 这个目录。相对路径:路径的写法『不是由 / 写起』,例如由 /usr/share/doc 要到 /usr/share…

Java实现在线沟通功能

文章目录1、介绍 和 特点2、整合SpringBoot2.1、导入依赖2.2、websocket 配置类2.3、消息处理类2.4、启动服务2.5、前端代码:张三2.6、前端代码:李四3、效果4、小结1、介绍 和 特点 t-io是基于JVM的网络编程框架,和netty属同类,所…

【LeetCode】剑指 Offer 14- I. 剪绳子 p96 -- Java Version

题目链接:https://leetcode.cn/problems/jian-sheng-zi-lcof/ 1. 题目介绍(14- I. 剪绳子) 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1)&#xff0c…

计算机网络你都懂了吗

文章目录一、计算机网络的定义简单定义通用定义二、计算机网络通信过程三、什么是网络协议(Protocol)四、网络协议组成及功能一、计算机网络的定义 简单定义 计算机网络是一些相互连接的、自治的计算机系统的集合。 通用定义 将处于不同位置并具有独…

MySQL简介、M有SQL的存储引擎、表、字段和数据

Java知识点总结:想看的可以从这里进入 目录2、MySQL特性介绍2.1、MySQL简介2.2、存储引擎2.3、表、字段、数据2、MySQL特性介绍 2.1、MySQL简介 MySQL 是一个关系型数据库管理系统(RDBMS),于2009年被 Oracle 公司收购。它是一种关…

Hive---排序

Hive语法之排序 文章目录Hive语法之排序全局排序(Order By)升序降序按照别名排序多个列排序每个 Reduce 内部排序(Sort By)设置 reduce 个数查看设置 reduce 个数分区排序(Distribute By)设置 reduce 个数簇…

仅花半年时间,他从外包月薪5K到阿里月薪15K,究竟经历了什么?

背景介绍:“渣渣”二本,95年Java程序员**外包类型:**传统外包公司**内容简介:**朋友从一个传统公司是如何修仙到阿里巴巴?分享一些他的真实经历,希望对你有帮助。**学习路线:**基础(…

为什么HR眼中,Python是真正的简历加分项?

教育部在发布的关于《2023届高校毕业生预计1158万 校园招聘月启动》文中明确指出:“2023届高校毕业生预计1158万,同比增加82万人”。除开考研、考公的少数同学,几百万大军拼命往大企业投简历,求职竞争十分激烈。 来源&#xff1a…

优化长尾关键词有什么好处?在线长尾关键词挖掘

​想知道为什么要使用长尾关键词? 好吧,它们可以帮助你轻松找到合适的受众。 ​ 1.获得更高的转化率 长尾关键词对于搜索特定信息更有用。使用长尾关键词时通常会获得更高的转化率,因为内容与受众的需求更相关。 举个例子:你正…

数影周报:动视暴雪疑似数据泄露,数据出境安全评估申报最新进展

本周看点:动视暴雪疑似员工敏感信息及游戏数据泄露;谷歌云计算部门:两名员工合用一个工位;数据出境安全评估申报最新进展;TikTok Shop东南亚商城在泰国和菲律宾公布;智己汽车获九大金融机构50亿元贷款签约.…

Redis:实现全局唯一ID

Redis:实现全局唯一ID一. 概述二. 实现(1)获取初始时间戳(2)生成全局ID三. 测试为什么可以实现全局唯一?其他唯一ID策略补充:countDownLatch一. 概述 全局ID生成器:是一种在【分布式…

RK3568平台开发系列讲解(驱动基础篇)中断子系统框架

🚀返回专栏总目录 文章目录 一、中断硬件的组成二、软件框架三、中断常见概念沉淀、分享、成长,让自己和他人都能有所收获!😄 📢中断是指 CPU 正常运行期间,由于内外部事件或程序预先安排的事件,引起的 CPU 暂时停止正在运行的程序, 转而为该内部或外部预先安排的事…

基于Frenet优化轨迹的⾃动驾驶动作规划⽅法

动作规划(Motion Control)在⾃动驾驶汽⻋规划模块的最底层,它负责根据当前配置和⽬标配置⽣成⼀序列的动作,本⽂介绍⼀种基于Frenet坐标系的优化轨迹动作规划⽅法,该⽅法在⾼速情况下的ACC辅助驾驶和⽆⼈驾驶都具有较强…

2023年,尽量还是别裸辞了吧···

你知道什么叫 度日如年 吗?就是在家待业的每一天。你知道什么叫心焦如焚吗?就是投出100份简历却等不来一个回应。 当前就业环境,裁员、失业消息满天飞,好像能有一份工作就不错了,更别说高薪。其实这只是一方面。另一方…

基于BP神经网络的性别识别,BP神经网络详细原理,自编码神经网络代码,神经网络案例之18

目标 背影 BP神经网络的原理 BP神经网络的定义 BP神经网络的基本结构 BP神经网络的神经元 BP神经网络的激活函数, BP神经网络的传递函数 数据 神经网络参数 基于BP神经网络 性别识别的MATLAB代码 效果图 结果分析 展望 背影 男人体内蛋白质比例大,女生…

网易的“草长莺飞二月天”:增长稳健,加码研发,逐浪AI

2月23日,网易发布了2022年第四季度财报。 这是网易与暴雪分道扬镳后的首份财报,加上近期AIGC热度扩散至游戏、教育等各个领域,网易第四季度业绩及其对于GPT等热门技术的探索受到市场关注。 根据财报,第四季度,网易营…

SAFe(Scaled Agile Framework)学习笔记

1.SAFe 概述 SAFe(Scaled Agile Framework)是一种面向大型企业的敏捷开发框架,旨在协调多个团队和部门的协同工作,以实现高效的软件开发和交付。下面是SAFe框架的简单介绍总结: SAFe框架包括以下四个层次&#xff1a…