详解python中如何使用时间戳,日期,时间,时区

时间概念

utc与时区

UTC是Coordinated Universal Time的缩写,是全球时间的标准,UTC时间不受时区和夏令时的影响,是时间的标准。全球各地的时间以UTC时间为参考进行调整。

时区是Time Zone,是地球上按照经度划分的区域,每个区域有自己的标准时间,时区与UTC时间的差距通常以小时为单位(但有些时区偏移的时间有30分钟)。整个地球被划分为24个主要时区,每个时区大约覆盖15度经度(360度/24小时)

北京时间是东八区,东八区也就是比UTC时间偏移了8小时,也就是UTC+8,在世界上,同样在东八区的,还有澳大利亚的地区。

纽约时间是西五区,也就是UTC-5,因此,距离北京时间的东八区标准时间差是13小时。但是需要注意的是,当纽约地区开始夏令时的时候,会变成UTC-4,此时就是常见的12小时时差了。

东京时间是东九区,也就是UTC+9,因此,距离北京时间的东八区差是1小时,且是早1小时。

夏令时

夏令时是一种人为调整时钟的制度,通常在春季将时钟向前调一个小时,其目的是延长晚间的日照时间,旨在更有效地利用日光资源,减少能源消耗。

其中,北半球的高纬度国家通常使用夏令时,因为其纬度高,日照变化大。与之相反,接近赤道的地区,日照变化不大,因此通常不用夏令时。例如大部分亚洲国家,如中国,日本,韩国,都不使用夏令时。

没有使用过夏令时地区的人,通常对于夏令时的作用不太了解,具体来说:夏令时期间,时钟被拨快一小时。这意味着人们按照新的时间表作息,早上实际比平时早起一小时,但由于夏季天亮较早,对生活影响不大。下午下班时,按照新的时间,天色仍然明亮,人们可以在下班后享受更多的日照时间。

时间戳

时间戳是Timestamp是一种表示特定时间点的数字格式,基于UTC时间的1970年1月1日00:00:00以来经过的秒数或毫秒数来表示,时间戳可以精确地标识一个具体的时间点,该时间点不受时区影响。

时间戳在编程中有很大作用,例如,记录某个系统事件,用户注册的时间,或者通过计算时间戳的差,来计算时间间隔。

time

通用格式化

time主要处理时间的获取和简单的格式化,如果需要更复杂的日期和时间操作,应该尝试使用datetime

常用的格式化字符串方式如下所示,并且datetime中同样也这样使用

  • %Y:四位年份
  • %m:两位月份(01-12)
  • %d:两位日期(01-31)
  • %H:两位小时(00-23)
  • %M:两位分钟(00-59)
  • %S:两位秒(00-59)

时间戳

获取当前时间戳

import timetimestamp = time.time()
print("当前时间戳:", timestamp)

时间戳可以用于记录时间间隔,不过,如果要更精准的计时可以用

import timestart = time.perf_counter()
time.sleep(2)
end = time.perf_counter()
print(f"操作耗时: {end - start} 秒")

时间戳转为时间对象

时间戳转换为struct_time本地时间

timestamp = time.time()
local_time = time.localtime(timestamp)
print("本地时间:", local_time)

将时间戳转换为utc时间

timestamp = time.time()
utc_time = time.gmtime(timestamp)
print("UTC时间:", utc_time)

时间对象转为时间戳

import timestruct = time.strptime("2024-11-02 22:00:00", "%Y-%m-%d %H:%M:%S")
timestamp = time.mktime(struct)
print("时间戳:", timestamp)  # 时间戳: 1730556000.0

时间格式化

将一个时间戳快速转为可读时间

timestamp = time.time()
readable_time = time.ctime(timestamp)
print(readable_time)  # 格式如Sat Nov  2 10:32:27 2024
根据时间字符串,创建时间对象
time_str = "2024-11-02 22:00:00"
parsed_time = time.strptime(time_str, "%Y-%m-%d %H:%M:%S")print(parsed_time)

根据时间对象,转为字符串

time_str = "2024-11-02 22:00:00"
parsed_time = time.strptime(time_str, "%Y-%m-%d %H:%M:%S")formatted_time = time.strftime("%Y年%m月%d日%H点%M分", parsed_time)
print("格式化时间:", formatted_time)  # 格式化时间:2024年11月02日22点00分

时间暂停

时间是不会暂停的,实际上该功能是程序暂停

import timeprint("暂停前")
time.sleep(3)  # 暂停3秒
print("暂停后")

datetime

date日期

获取当前日期

today = datetime.date.today()
print("今天的日期:", today)  # 格式如2024-11-02

datetime日期时间

获取当前时间

now_time = datetime.datetime.now().time()
print("当前时间:", now_time)  # 格式如10:46:50.506231

获取当前日期与时间

now = datetime.datetime.now()
print("当前日期和时间:", now)  # 格式如2024-11-02 10:47:44.299445

获取UTC时间

utc_now = datetime.datetime.utcnow()
print("UTC时间:", utc_now)

创建日期时间对象

创建日期对象

specific_date = datetime.date(2024, 11, 2)
print("特定日期:", specific_date)

创建时间对象

specific_time = datetime.time(22, 0, 0)
print("特定时间:", specific_time)

创建日期时间对象

specific_datetime = datetime.datetime(2024, 11, 2, 22, 0, 0)
print("特定日期和时间:", specific_datetime)

时间字符串格式化与解析

时间字符串格式化

now = datetime.datetime.now()
formatted = now.strftime("%Y-%m-%d %H:%M:%S")
print("格式化日期时间:", formatted)

时间字符串解析

time_str = "2024-11-2 22:00:00"
parsed_datetime = datetime.datetime.strptime(time_str, "%Y-%m-%d %H:%M:%S")
print("解析后的日期时间对象:", parsed_datetime)

时间间隔

使用timedelta计算时间间隔的日期

from datetime import date, timedeltatoday = date.today()
future_date = today + timedelta(days=10)
print("10天后的日期:", future_date)past_date = today - timedelta(weeks=1)
print("一周前的日期:", past_date)

计算时间间隔的日期时间

from datetime import datetime, timedeltanow = datetime.now()future_time = now + timedelta(minutes=10)
print("10分钟后的日期时间:", future_time)past_time = now - timedelta(hours=2)
print("2小时前的日期时间:", past_time)

zoneinfo

时间转换

在python 3.9以后,引入了zoneinfo用于处理时区,并且能够直接用于datetime

from datetime import datetime
from zoneinfo import ZoneInfonow_utc = datetime.now(ZoneInfo("UTC"))
print("UTC时间:", now_utc)# 转换为北京时间
now_beijing = now_utc.astimezone(ZoneInfo("Asia/Shanghai"))
print("北京时间:", now_beijing)# 转换为纽约时间
now_newyork = now_utc.astimezone(ZoneInfo("America/New_York"))
print("纽约时间:", now_newyork)

实际上,时间转换也可以自行进行计算,例如,我们已经了解了北京时间是UTC+8,纽约时间是UTC-5

from datetime import datetime, timedeltanow_utc = datetime.utcnow()
print("UTC时间:", now_utc)now_beijing = now_utc + timedelta(hours=8)
print("北京时间:", now_beijing)now_newyork = now_utc - timedelta(hours=5)
print("纽约时间:", now_newyork)

列出所有时区

所有时区

import zoneinfoprint(zoneinfo.available_timezones())

遍历找到其中的Asia时区

import zoneinfofor zone in zoneinfo.available_timezones():if "Asia" in zone:print(zone)

获取时区时间

如果在使用当前时间的时候,总是自行设置本地时区的时间,而不依赖于机器设置,可以获得更好的跨平台性

from datetime import datetime
from zoneinfo import ZoneInfotz_shanghai = ZoneInfo("Asia/Shanghai")
tz_newyork = ZoneInfo("America/New_York")now_shanghai = datetime.now(tz_shanghai)
now_newyork = datetime.now(tz_newyork)print("北京时间:", now_shanghai)
print("纽约时间:", now_newyork)

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

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

相关文章

终于把DETR搞懂了!Detection Transformer架构详解及使用方法说明

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…

Calling short variants with GATK4

计算生物学实验5: Calling short variants with GATK4 1. 实验目的 本实验目的是利用 GATK4 工具准确高效地检测出基因组中的短变异。通过该工具对样本基因组进行分析,旨在发现单核苷酸变异(SNV)和小的插入缺失(Indel&#xff0…

S32K324 DTCM/DTCM Backdoor使用及测试

文章目录 前言S32K324的Memory mapDTCM的原理DTCM的使用DTCM/DTCM backdoor测试总结 前言 S32K324的Ram在选型手册上给的是512K,但实际上sram只有320k,项目中对ram的需求更大,所以需要拓展一下ram的使用。本文分析DTCM的使用方案及测试结果 S32K324的M…

Pytorch猴痘病识别

Pytorch猴痘病识别 🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 电脑系统:Windows11 显卡型号:NVIDIA Quadro P620 语言环境:python 3.9.7 编译器:jupyte…

网络安全渗透实际案例

目录 案例场景案例目标和工具 案例操作步骤Step 1:信息收集与识别**结果分析** Step 2:漏洞扫描**预期结果** Step 3:漏洞利用与权限验证Step 4:后渗透测试Step 5:报告生成和修复建议**修复建议** 案例总结 下面是一个…

快消零售行业的培训创新:构建在线培训知识库

在快速消费品(FMCG)行业中,员工的培训和发展对于保持竞争力至关重要。随着电子商务的兴起和消费者行为的变化,快消零售行业需要不断适应新的市场趋势。在线培训知识库作为一种有效的培训工具,可以帮助企业提升员工技能…

软考(中级-软件设计师)计算机网络篇(1101)

第五章:计算机网络基础 **考纲要求**根据开始大纲中相应的考核要求,要求考生掌握一下方面的内容: 1、计算机网络基础知识 网络体系结构传输介质、传输技术、传输方法、传输控制常用网络设备和各类通信设备的特点Client-Server结构、Browser…

【毫米波雷达(四)】车载毫米波雷达下线EOL标定流程

汽车控制器下线EOL标定流程 一、概述二、标定的目的三、雷达标定的要求1、车辆的要求2、标定环境要求四、以软件的角度分析前雷达的EOL标定 一、概述 由于雷达的安装误差会影响雷达对目标位置的检测,导致报警及功能性能下降。因此雷达进行预安装后必须进行角度标定…

免费插件集-illustrator插件-Ai插件-闭合开放路径

文章目录 1.介绍2.安装3.通过窗口>扩展>知了插件4.功能解释5.总结 1.介绍 本文介绍一款免费插件,加强illustrator使用人员工作效率,实现图形编辑中闭合开放路径。首先从下载网址下载这款插件https://download.csdn.net/download/m0_67316550/8789…

LDA 线性分类

线性判别分析是一种经典的线性分类方法,将高维空间投射到低维空间,如下图。 LDA 的目标就是简单累内距离变小,把类间的距离变大,这样就可以把相似的数据聚集在一起。 u1 和 u2 类间距离,S1、S2 为类内数据点之间的距…

面试必会50题

基础篇 01 和 equals 的区别是什么 : 可以比较基本数据类型也可以比较引用数据类型 , 比较基本数据类型是比较值是否相等, 比较引用数据类型是比较引用地址是否相等 (基本数 据类型 比较的是值,引用数据类型 比较的是内存地址) equals() : 一般用于对象的比较…

Python 工具库每日推荐 【Sphinx】

文章目录 引言文档工具的重要性今日推荐:Sphinx 文档生成工具主要功能:使用场景:安装与配置快速上手示例代码代码解释实际应用案例案例:为 Python 项目生成 API 文档案例分析高级特性自定义主题国际化支持扩展阅读与资源优缺点分析优点:缺点:总结【 已更新完 TypeScript …

Pinctrl子系统中Pincontroller构造过程驱动分析:imx_pinctrl_soc_info结构体

往期内容 本专栏往期内容: Pinctrl子系统和其主要结构体引入Pinctrl子系统pinctrl_desc结构体进一步介绍Pinctrl子系统中client端设备树相关数据结构介绍和解析 input子系统专栏: 专栏地址:input子系统input角度:I2C触摸屏驱动分析…

第十五章 Vue工程化开发及Vue CLI脚手架

目录 一、引言 二、Vue CLI 基本介绍 三、安装Vue CLI 3.1. 安装npm和yarn 3.2. 安装Vue CLI 3.3. 查看 Vue 版本 四、创建启动工程 4.1. 创建项目架子 4.2. 启动工程 五、脚手架目录文件介绍 六、核心文件讲解 6.1. index.html 6.2. main.js 6.3. App.vue 一、…

Rust 力扣 - 2841. 几乎唯一子数组的最大和

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 我们遍历长度为k的窗口,用一个哈希表记录窗口内的所有元素(用来对窗口内元素去重),我们取哈希表中元素数量大于等于m的窗口总和的最大值 题解代码 use std::coll…

Python数据分析案例61——信贷风控评分卡模型(A卡)(scorecardpy 全面解析)

案例背景 虽然在效果上,传统的逻辑回归模型通常不如现代的机器学习模型,但在风控领域,解释性至关重要。逻辑回归的解释性是这些“黑箱”模型所无法比拟的,因此,研究传统的评分卡模型依然是有意义的。 传统的评分卡模型…

免费送源码:Java+Springboot+MySQL Springboot酒店客房管理系统的设计与实现 计算机毕业设计原创定制

摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对酒店客房管理等问题,对酒店客房…

力扣每日一题 超级饮料的最大强化能量 动态规划(dp)

来自未来的体育科学家给你两个整数数组 energyDrinkA 和 energyDrinkB,数组长度都等于 n。这两个数组分别代表 A、B 两种不同能量饮料每小时所能提供的强化能量。 你需要每小时饮用一种能量饮料来 最大化 你的总强化能量。然而,如果从一种能量饮料切换到…

Linux高阶——1027—守护进程

1、守护进程的基本流程 1、父进程创建子进程,父进程退出 守护进程是孤儿进程,但是是工程师人为创建的孤儿进程,低开销模式运行,对系统没有压力 2、子进程(守护进程)脱离控制终端,创建新会话 …

抗疫物资管理:SpringBoot技术应用案例

目 录 摘 要 1 前 言 2 第1章 概述 2 1.1 研究背景 3 1.2 研究目的 3 1.3 研究内容 4 第二章 开发技术介绍 5 2.1相关技术 5 2.2 Java技术 6 2.3 MySQL数据库 6 2.4 Tomcat介绍 7 2.5 Spring Boot框架 8 第三章 系统分析 9 3.1 可行性分析 9 3.1.1 技术可行性 9 3.1.2 经济可行…