|Python新手小白中级教程|第三十章:日期与时间(入门)

文章目录

  • 前言
  • 一、日期与时间的基本概念
  • 二、时间戳
    • 1.概念
    • 2.形成过程
  • 三、Python的时间格式化符号
  • 四、时间元组
    • 1.时间元组:
    • 2.struct_time元组的属性
  • 五、time库可以干什么
  • 总结

前言

大家好呀,BOBO仔回来啦。
说实话,这几天我们学习面向对象的编程理念,着实有点伤脑筋。ok,接下来的这几章节,就让你可怜的神经放松一下!


一、日期与时间的基本概念

时间,不论在生活中还是工作中,都至关重要,我们每时每刻都要与时间time打交道。
但是,当time变成了Python里的模块,那么…
有趣!太有趣啦!

这一期,我主要来讲讲time库的基本概念。

二、时间戳

1.概念

时间戳(timestamp),是指指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数 。通俗的讲,时间戳是一个能够表示一份数据在一个特定时间点已经存在的完整的可验证的数据。他的提出为用户提出了一份电子数据,以证明用户某些数据的产生时间。
在实际应用上,他可以使用在包括“电子商务”,“金融活动”的各个方面,尤其可以用来支撑公开的秘钥基础设施的“不可否然”的服务。

上面的时间戳的概述是不是有点。。。抽象? 没事,大家就可以把他理解为一个经加密形成的凭证文档,而且他包括三个部分。
1.需加时间戳的文件的摘要
2.DTS(Decode Time Stamp,解码时间戳)收到文件的日期与时间
3.DTS的数据签名

噢,是不是想起了一些记忆中的画面?

在这里插入图片描述
哇,是不是好严谨?难怪能用来保护金融文件。

2.形成过程

在这里插入图片描述
从这几张简图来看,时间戳的形成好像还挺简单的…
在这里插入图片描述
嘿嘿,其实不然。
时间戳由于其本身的重要性,因此往往不能那么的小儿科。时间戳在形成是会考虑到多种因素,如会不会丢失,会不会被非法篡改等等。
怎么样,档次感是不是直接飙升?
但不过也要注意,书面签署文件的时间是由签署人自己写上的,而数字时间戳不然。它是由认证单位DTS加的,用DTS收到的时间为依据。

【注:以上内容为网络资料与个人了解,如有问题敬请指出!!!】

三、Python的时间格式化符号

Python中会用一些特殊的符号来格式化时间日期,类似于字符串格式化中的“%s”,“%d”等等。
比如,这里我会罗列一点。
%Y:4位数年份,例如2025
%m:2位数月份(01到12)
%d:2位数日期(01到31)
%H:2位数小时(00到23,24小时制)
%M:2位数分钟(00到59)
%S:2位数秒(00到59)
%f:微秒(000000到999999)
%a:本地简化星期名称,例如Mon
%A:本地完整星期名称,例如Monday
%b:本地简化月份名称,例如Jan
%B:本地完整月份名称,例如January
%c:本地相应的日期表示和时间表示
%I:2位数小时(01到12,12小时制)
%p:本地am或pm的相应符
%j:一年中的第几天(001到366)
%U:一年中的第几周(00到53,星期天是一个星期的开始)
%w:一个星期中的第几天(0到6,星期天是0)
%W:一年中的第几周(00到53,星期一是一个星期的开始)
%x:本地相应的日期表示
%X:本地相应的时间表示
%Z:当前时区的名称
%%:一个字面上的百分号

啊。。。好难背。。。

怎么办呢?这么多。。。
没事,我这里有两个秘方:
第一,也是最省力的:
收藏我的文章!!!保证不会忘!!!
在这里插入图片描述
第二个方法,就是我后面会讲的,用函数,时间time库函数,
毕竟,对于我这种懒蛋来说,打个百分号都嫌烦。。。

好,言归正传。
如果大家觉得有点抽象,我可以举个例子
比如我想输出类似于"2025-01-20 12:34:56"的字符串(具体会随着时间变化)

from datetime import datetimenow = datetime.now()
formatted_now = now.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_now)

大家运行一下,会看到如下画面:
在这里插入图片描述
哈!和我输入的时刻一毛一样!!!

当然,大家也不要慌张。
在第三十一章,我会给大家好好讲讲怎么用函数来完成这些任务。

四、时间元组

这部分内容有点复杂,大家自行理解

1.时间元组:

这种结构具有如下属性:
在Python中,时间元组(time tuple)是一个包含九个元素的元组,它表示一个时间点,并且通常与time模块中的函数一起使用。这个元组按照以下顺序包含以下元素:

‌年‌(4位数,例如2025)
‌月‌(1到12)
‌日‌(1到31)
‌小时‌(0到23)
‌分钟‌(0到59)
‌秒‌(0到61,包括闰秒)
‌一周中的第几天‌(0到6,0表示星期一)
‌一年中的第几天‌(1到366)

‌是否是夏令时‌(-1, 0, 1;-1表示不确定,0表示不是夏令时,1表示是夏令时)

上述就是struct_time元组(即time.struct_time对象)

时间元组通常用于将时间戳转换为可读的时间格式,或者将时间格式转换为时间戳。在time模块中,有几个函数可以处理时间元组,比如time.localtime()、time.gmtime()和time.strptime()。

这里我举个例子:

import time# 获取当前本地时间的时间元组
local_time_tuple = time.localtime()
print("Local time tuple:", local_time_tuple)# 获取当前UTC时间的时间元组
utc_time_tuple = time.gmtime()
print("UTC time tuple:", utc_time_tuple)# 将一个时间字符串解析为时间元组
time_string = "2025-01-20 12:34:56"
parsed_time_tuple = time.strptime(time_string, "%Y-%m-%d %H:%M:%S")
print("Parsed time tuple:", parsed_time_tuple)# 注意:strptime() 返回的时间元组不包含夏令时信息,因此它只有8个元素。
# 如果你需要夏令时信息,你可能需要使用其他方法或库来获取。# 将时间元组转换为时间戳
timestamp = time.mktime(local_time_tuple)
print("Timestamp:", timestamp)# 将时间戳转换为本地时间的时间元组
local_time_from_timestamp = time.localtime(timestamp)
print("Local time from timestamp:", local_time_from_timestamp)

2.struct_time元组的属性

在Python中,struct_time元组是time模块中的一个数据类型,用于表示时间。这个元组有9个属性,每个属性都对应一个特定的时间组成部分。以下是struct_time元组的属性及其含义:

‌tm_year‌:年份,例如2025。
‌tm_mon‌:月份,范围是1到12,其中1代表1月。
‌tm_mday‌:日期,即一个月中的第几天,范围是1到31。
‌tm_hour‌:小时,范围是0到23,其中0代表午夜。
‌tm_min‌:分钟,范围是0到59。
‌tm_sec‌:秒,范围是0到61(包括闰秒)。
‌tm_wday‌:星期几,范围是0到6,其中0代表星期一。
‌tm_yday‌:一年中的第几天,范围是1到366(考虑到闰年)。
‌tm_isdst‌:是否是夏令时,1表示是夏令时,-1表示未知,0表示不是夏令时。
struct_time对象通常是通过time.localtime(), time.gmtime(), 或 time.strptime()等函数返回的。这些函数将时间信息解析为struct_time元组,使得可以方便地访问时间的各个组成部分。

例如,使用time.localtime()函数获取当前本地时间,并访问其各个属性:

import time# 获取当前本地时间
current_time = time.localtime()# 访问struct_time的各个属性
print("年份:", current_time.tm_year)
print("月份:", current_time.tm_mon)
print("日期:", current_time.tm_mday)
print("小时:", current_time.tm_hour)
print("分钟:", current_time.tm_min)
print("秒:", current_time.tm_sec)
print("星期几:", current_time.tm_wday)  # 0=星期一, 1=星期二, ...
print("一年中的第几天:", current_time.tm_yday)
print("是否是夏令时:", current_time.tm_isdst)

这样,你就能很方便地获取并处理信息了
在这里插入图片描述
(哇,泰裤辣…)

五、time库可以干什么

time库,就是Python中掌管时间的神。
玩过游戏的都知道,这一点有多重要。
或者,我们的电子时间,也可以用这种程序做出来
比如,我们做一个电子秒表,从00:00:00开始计时,我们的代码可以像这样写:

import timedef electronic_stopwatch():start_time = time.time()  # 获取开始时间的时间戳try:while True:# 计算从开始到现在经过的秒数elapsed_time = time.time() - start_time# 将秒数转换为小时、分钟和秒hours, remainder = divmod(elapsed_time, 3600)minutes, seconds = divmod(remainder, 60)# 格式化输出,确保小时、分钟和秒都是两位数formatted_time = f"{int(hours):02}:{int(minutes):02}:{int(seconds):02}"# 打印当前时间,并刷新输出(在大多数终端中,\r会将光标移回行首)print(f"\r电子秒表: {formatted_time}", end="")# 等待一秒再更新time.sleep(1)except KeyboardInterrupt:# 当用户按下Ctrl+C时,退出循环print("\n秒表已停止。")# 调用函数开始秒表
electronic_stopwatch()

输出就像这样:
00:00:02在这里插入图片描述

00:00:08
在这里插入图片描述
00:01:32
在这里插入图片描述
amazing~~~

这就是time库的具体应用了
不过,我们在写这段代码的时候,看似输出非常简单,实际上要充分的应用到我们之前讲的几乎是每一个知识点,如函数封装、面向对象、字符串format格式以及while循环。

雕虫小技!

当然,他也能倒计时
这里我用倒计时10秒

import timedef countdown(seconds):try:while seconds > 0:mins, secs = divmod(seconds, 60)timeformat = '{:02d}:{:02d}'.format(mins, secs)print(f"\r倒计时: {timeformat}", end="")time.sleep(1)seconds -= 1print("\n倒计时结束!")except KeyboardInterrupt:print("\n倒计时被中断。")# 设置倒计时的秒数
countdown_seconds = 10# 调用倒计时函数
countdown(countdown_seconds)

22行代码,拿下!!!
(菜鸟kk:有点多。。。)


总结

今天,我们研究了Python时间概念编程的基础,都是一些比较基础、琐碎的东西,还没有涉及到函数以及太难的代码应用。
(呵呵,刚刚的eg不算)

好了,最后的最后——
看在我叫你们2块超级代码应用的份上…
制作不易!一圈三连,点个关注呗~~~

下期我们会深入学习time库的指令,敬请期待,bye~~~

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

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

相关文章

代码随想录刷题day13|(链表篇)24.两两交换链表中的结点

目录 一、链表理论基础 二、思路及易错点 易错点 三、相关算法题目 四、错误代码分析 一、链表理论基础 代码随想录 (programmercarl.com) 二、思路及易错点 该题使用虚拟头结点正常进行模拟即可,有两个关键点,一是循环何时终止?终止…

PIC单片机设置bootloader程序和app程序地址方法

在调试bootloader和app程序的时候通常都需要设置程序的偏移地址,下面就总结一下使用MPLAB X IDE 设置程序地址的方法。 打开bootloader工程 工程上单击鼠标右键,选择Properties,打工工程属性窗口。 此时会打开项目属性对话框 左边类别选择XC8 Line…

51c大模型~合集105

我自己的原文哦~ https://blog.51cto.com/whaosoft/13101924 #刚刚,ChatGPT开始有了执行力! 现在 AI 智能体可以 24*7 小时为你打工。 2025 刚过去了半个月,OpenAI 在智能体领域「开大」了。 今天,OpenAI 正在为 ChatGPT 推出…

迅为龙芯2K1000开发板/核心板流畅运行Busybox、Buildroot、Loognix、QT5.12系统

硬件配置 国产龙芯处理器,双核64位系统,板载2G DDR3内存,流畅运行Busybox、Buildroot、Loognix、QT5.12 系统! 接口全板载4路USB HOST、2路千兆以太网、2路UART、2路CAN总线、Mini PCIE、SATA固态盘接口、4G接口、GPS接口WIF1、蓝牙、Mini H…

StarRocks强大的实时数据分析

代码仓库:https://github.com/StarRocks/starrocks?tabreadme-ov-file StarRocks | A High-Performance Analytical Database 快速开始:StarRocks | StarRocks StarRocks 是一款高性能分析型数据仓库,使用向量化、MPP 架构、CBO、智能物化…

web前端1--基础

(时隔数月我又来写笔记啦~) 1、下载vscode 1、官网下载:Visual Studio Code - Code Editing. Redefined 2、步骤: 1、点击同意 一直下一步 勾一个创建桌面快捷方式 在一直下一步 2、在桌面新建文件夹 拖到vscode图标上 打开v…

基于tldextract提取URL里的子域名、主域名、顶级域

TLD是TopLevel Domain的缩写。‌tldextract‌ 是一个用于从URL中提取子域、主域名和顶级域(TLD)的Python库。它利用公共后缀列表(Public Suffix List)来确保即使是复杂或不常见的URL结构也能被正确解析。tldextract能够处理包括IC…

音频入门(一):音频基础知识与分类的基本流程

音频信号和图像信号在做分类时的基本流程类似,区别就在于预处理部分存在不同;本文简单介绍了下音频处理的方法,以及利用深度学习模型分类的基本流程。 目录 一、音频信号简介 1. 什么是音频信号 2. 音频信号长什么样 二、音频的深度学习分…

数据结构之堆排序

文章目录 堆排序版本一图文理解 版本二向下调整建堆向上调整建堆 排升/降序升序 堆排序 版本一 基于已有数组建堆取堆顶元素并删除堆顶元素重新建大根堆,完成排序版本。 图文理解 版本二 前提:必须提供有现成的数据结构堆 数组建堆,首尾…

小菜鸟系统学习Python第三天

1.优先级问题: 结论: 幂运算>正负号>加减乘除和整除>比较运算符>逻辑运算符 2.三元运算符 3.assert断言:抛出AssertionError异常 4.for循环 4. 5.break和continue

常用排序算法之插入排序

目录 前言 一、基本原理 1.算法步骤 2.动画演示 3.插入排序的实现代码 二、插入排序的时间复杂度 1. 时间复杂度 1.最优时间复杂度 2.最差时间复杂度 3.平均时间复杂度 2. 空间复杂度 三、插入排序的优缺点 1.优点 2.缺点 四、插入排序的改进与变种 五、插入排…

数据分析及应用:经营分析中的综合指标解析与应用

目录 1. 市场份额(Market Share) 2. 客户获取成本(Customer Acquisition Cost, CAC) 3. 客户生命周期价值(Customer Lifetime Value, CLV) 4. 客户留存率(Customer Retention Rate, CRR) 5. 净推荐值(Net Promoter Score, NPS) 6. 转化率(Conversion Rate) …

工业相机 SDK 二次开发-Halcon 插件

本文介绍了 Halcon 连接相机时插件的使用。通过本套插件可连接海康 的工业相机。 一. 环境配置 1. 拷贝动态库 在 用 户 安 装 MVS 目 录 下 按 照 如 下 路 径 Development\ThirdPartyPlatformAdapter 找到目录为 HalconHDevelop 的文 件夹,根据 Halcon 版本找到对…

【Vim Masterclass 笔记25】S10L45:Vim 多窗口的常用操作方法及相关注意事项

文章目录 S10L45 Working with Multiple Windows1 水平分割窗口2 在水平分割的新窗口中显示其它文件内容3 垂直分割窗口4 窗口的关闭5 在同一窗口水平拆分出多个窗口6 关闭其余窗口7 让四个文件呈田字形排列8 光标在多窗口中的定位9 调节子窗口的尺寸大小10 变换子窗口的位置11…

Linux TCP 之 RTT 采集与 RTO 计算

我们来看看 Linux TCP 采集 RTT 的函数 tcp_rtt_estimator,看注释,充满了胶着。 但在那个谨慎的年代,这些意味着什么? RTT 最初仅用于 RTO 的计算而不是用于调速,RTO 的计算存在两个问题,如果过估&#x…

如何使用CRM数据分析优化销售和客户关系?

嘿,大家好!你有没有想过为什么有些公司在市场上如鱼得水,而另一些却在苦苦挣扎?答案可能就藏在他们的销售策略和客户关系管理(CRM)系统里。今天我们要聊的就是如何通过有效的 CRM 数据分析来提升你的销售额…

《Effective Java》学习笔记——第2部分 对象通用方法最佳实践

文章目录 第2部分 所有对象通用方法一、前言二、最佳实践内容1. equals()方法2. hashCode()方法3. toString() 方法4. clone() 方法5. finalize() 方法6. compareTo()方法(实现 Comparable 接口) 三、小结 第2部分 所有对象通用方法 一、前言 《Effect…

前沿技术趋势洞察:2024年技术的崭新篇章与未来走向!

引言 时光飞逝,2024年已经来临,回顾过去一年,科技的迅猛进步简直让人目不暇接。 在人工智能(AI)越来越强大的今天,我们不再停留在幻想阶段,量子计算的雏形开始展示它的无穷潜力,Web …

图的基本概念

一、图 二、顶点的度 三、图的同构 ​​​​​​​​​​​ 四、完全图 五、子图 六、补图

【游戏设计原理】75 - 最小最大化

一、理解与分析 最小/最大化的核心是玩家在角色扮演类游戏中使用的一种策略,旨在通过把角色的某些不利特性最小化、而有利特性最大化来增强角色在特定领域的优势。这种策略通常表现为以下几种形式: 角色单一化:玩家通过极端优化角色的某一项…