挑战30天学完Python:Day16 日期时间

news2024/12/29 8:57:15

📘 Day 16

🎉 本系列为Python基础学习,原稿来源于 30-Days-Of-Python 英文项目,大奇主要是对其本地化翻译、逐条验证和补充,想通过30天完成正儿八经的系统化实践。此系列适合零基础同学,或仅了解Python一点知识,但又没有系统学习的使用者。总之如果你想提升自己的Python技能,欢迎加入《挑战30天学完Python》

Python datetime

Python内置有 datetime 模块,可以用来处理日期和时间。在编程的世界里少不了与时间打交道,因此让我们来专门学习一下 datetime 的使用。

>>> import datetime
>>> print(dir(datetime))
['MAXYEAR', 'MINYEAR', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'date', 'datetime', 'datetime_CAPI', 'sys', 'time', 'timedelta', 'timezone', 'tzinfo']

使用内置 dir 或 help 命令可以打印某个模块中可用的函数。如你所见,在 datetime 模块有很多的方法,不过我们将重点关注其中_date_, datetime, timetimedelta 这几个。

获取 datetime 信息

from datetime import datetime
now = datetime.now()
print(now)                      # 当前时间 2023-01-07 20:30:55.689393
day = now.day 
month = now.month
year = now.year
hour = now.hour
minute = now.minute
second = now.second
timestamp = now.timestamp()
print(day, month, year, hour, minute)  # 日 月 年 小时 秒 7 1 2023 20 30
print('timestamp', timestamp)
print(f'{day}/{month}/{year}, {hour}:{minute}')  # 格式化输出时间 7/1/2023, 20:30

时间戳或Unix时间戳是UTC时间从1970年1月1日开始的秒数。

使用 strftime 格式化日期输出

不使用任何内置函数方法的情况,如果我们想输出想要格式日期,我们可能需要这么做:

from datetime import datetime
new_year = datetime(2023, 1, 21)  # 指定日期 2023 除夕
print(new_year)      # 2023-01-21 00:00:00 时间不指定默认0点
day = new_year.day
month = new_year.month
year = new_year.year
hour = new_year.hour
minute = new_year.minute
second = new_year.second
print(day, month, year, hour, minute)  #日 月 年 时 分 21 1 2023 0 0
print(f'{year}-{month}-{day} {hour}:{minute}')  # 2023-1-21 0:0

然而我们可以使用 strftime 更快速方便对时间进行格式化输出, 下面再看一些使用例子:

更新详细的 strftime 格式化日期时间方法,可以阅读这 strftime.org 网站。

from datetime import datetime
# 获取当前期日和时间
now = datetime.now()

t = now.strftime("%H:%M:%S")
print("time:", t)

time_one = now.strftime("%Y-%m-%d %H:%M:%S")
# YY-dd-mm H:M:S
print("time one:", time_one)

time_two = now.strftime("%d/%m/%Y, %H:%M:%S")
# dd/mm/YY H:M:S
print("time two:", time_two)
time: 20:45:27
time one: 2023-01-07 20:45:27
time two: 07/01/2023, 20:45:27

下面的图片展示了_strftime_ 模块所有格式符号。在代码编程中按需使用。

在这里插入图片描述

使用 strptime 将字符转时间

这里有个建议阅读文档 documentation,或许它能帮助你更好地理解。

from datetime import datetime
date_string = "5 March, 2022"
print("date_string =", date_string)
date_object = datetime.strptime(date_string, "%d %B, %Y")
print("date_object =", date_object)
date_string = 5 March, 2022
date_object = 2022-03-05 00:00:00

使用 datetime 模块内date

from datetime import date
d = date(2022, 5, 1)
print(d)                             # 指定时间 2022-05-01 
print('Current date:', d.today())    # 当前时间 2023-01-07

# 将今天的时间给予today对象
today = date.today()
print("Current year:", today.year)   # 2023
print("Current month:", today.month) # 1
print("Current day:", today.day)     # 7

时间 time 对象

from datetime import time
# time(hour = 0, minute = 0, second = 0)
a = time()
print("a =", a)
# time(hour, minute 和 second)
b = time(10, 30, 50)
print("b =", b)
# time(hour, minute 和 second)
c = time(hour=10, minute=30, second=50)
print("c =", c)
# time(时, 分, 秒, 毫秒)
d = time(10, 30, 50, 200555)
print("d =", d)

输出

a = 00:00:00  
b = 10:30:50  
c = 10:30:50  
d = 10:30:50.200555

时间差

时间可以直接进行差值运算

today = date(year=2019, month=12, day=5)
new_year = date(year=2020, month=1, day=1)
time_left_for_newyear = new_year - today
print('Time left for new year: ', time_left_for_newyear)  # Time left for new year:  27 days, 0:00:00

t1 = datetime(year = 2019, month = 12, day = 5, hour = 0, minute = 59, second = 0)
t2 = datetime(year = 2020, month = 1, day = 1, hour = 0, minute = 0, second = 0)
diff = t2 - t1
print('Time left for new year:', diff) # Time left for new year: 26 days, 23: 01: 00

使用 datetime 模块中 timedelata 方便在日期上做加减指定时间单位的加减。

from datetime import timedelta
t1 = timedelta(weeks=12, days=10, hours=4, seconds=20)
t2 = timedelta(days=7, hours=5, minutes=3, seconds=30)
t3 = t1 - t2
print("t3 =", t3)
t3 = 86 days, 22:56:50

这个 timedelata 需要要结合date或datetime类的对象使用

from datetime import timedelta, date
today = date.today()
print(today)    # 2023-01-07

yestoday = today + timedelta(days=-1)
print(yestoday)  # 2023-01-06

🌕 你是如此的努力。你已经在伟大python学习之路上行走了16步了。课后让我们按惯例做些练习吧

💻 第16天练习

  1. 使用 datetime 模块分别获取年、月、日、时、分 和 时间戳信息
  2. 使用 %m/%d/%Y, %H:%M:%S 格式输出当前时间
  3. 如果时间是 “2023年1月1日”,将此字符串时间转成时间类型
  4. 计算当前时间和元旦那天的时间差
  5. 计算当前时间距离1970年1月1的时间差或时间戳
  6. 思考题:想想这个 datetime 模块可以实际应用在那些编码场景中呢?

🎉 CONGRATULATIONS ! 🎉

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(十一)【Jmeter】线程(Threads(Users))之jp@gc-Ultimate Thread Group

简述 操作路径如下: 作用:提供了高级的线程组控制选项,支持更复杂的场景模拟。配置:设置多种线程控制参数,如启动延迟、启动线程数、并发压测持续时间、关闭线程时间等。使用场景:针对特定需求进行高级的并发访问模拟,如流量控制、延迟启动等。优点:提供了丰富的控制…

“目标检测”任务基础认识

“目标检测”任务基础认识 1.目标检测初识 目标检测任务关注的是图片中特定目标物体的位置。 目标检测最终目的:检测在一个窗口中是否有物体。 eg:以猫脸检测举例,当给出一张图片时,我们需要框出猫脸的位置并给出猫脸的大小,如…

k8s kubectl陈述式资源管理及命令详解,项目流程与发布示例

目录 Kubernetes kubectl 命令表 _ Kubernetes(K8S)中文文档_Kubernetes中文社区http://docs.kubernetes.org.cn/683.html kubectl概念 概述 用途 kubectl语法 基本语法 简单举例 kubectl使用详解 set:更新 部署发布操作 暴露service service的作用 使…

halcon的灰度变换(图像增强)

参考Halcon代码: w:3 h:3 gen_image_const (Image, byte, w, h) get_domain (Image, Domain) get_region_points (Domain, Rows, Columns) *将图像的所有灰度值都设置为1 grayvals:[1,20,3,10,1,1,1,1,1] set_grayval (Image, Rows, Columns, grayvals) get_grayva…

星河做市基金会全球DAO社区启动,为数字货币市场注入新活力

2024年的数字货币市场即将迎来一次重要的历史性时刻 — 比特币减半,这四年一次的事件将成为全球数字资产市场的焦点,预示着新一轮的牛市浪潮即将到来。在这个关键时刻,星河做市基金会展现出其作为区块链行业领先市值管理公司的独特魅力。 GA…

Angular升级后运行编译变慢?如何解决?

公司的Angular项目升级后,使用体验感十分不好,运行、编译的时间明显增长,工作效率是十分低下,但奈何公司的大佬们都有自己的事情要忙,结识的大佬也不够多,只能靠自己找度娘了。但是,哎&#xff…

2024年最新1000个Java毕业设计选题参考

文章目录 2024年最新Java毕业设计选题参考一、Java毕业设计选题参考二、javaweb毕业设计选题三、springboot/ssm毕业设计选题参考 源码获取: 博主介绍:✌全网粉丝7W,CSDN博客专家、Java大数据领域优质创作者,博客之星、掘金/华为云/阿里云/In…

初识字符串哈希(Hash)

目录 1.字符串哈希的介绍 2.自然溢出哈希 3.单哈希 4.双哈希 5.例题分析 1.自然溢出哈希AC代码 2.单哈希AC代码 3.双哈希AC代码 6.总结 1.字符串哈希的介绍 字符串哈希是一种将字符串映射为一个固定长度的整数或哈希值的技术。它的主要目的是加速字符串比较和搜索操作…

UE开发01--part 1:创建游戏模式、角色、控制器

1,右键选择新建C类 2,选择GameModeBase 3,随便命名,类的类型-->选择:公共; 这个选项会把.h和.cpp文件分开,方便我们查看与修改代码。 4.打开 VS 编辑器,查看我们刚刚创建得两文件…

机器学习 day38(有放回抽样、随机森林算法、XGBoost)

有放回抽样 有放回抽样和无放回抽样的区别:有放回可以确保每轮抽取的结果不一定相同,无放回则每轮抽取的结果都相同 在猫狗的例子中,我们使用”有放回抽样“来抽取10个样本,并组合为一个与原始数据集不同的新数据集,虽…

2.1_2 进程的状态与转换

2.1_2 进程的状态与转换 (一)进程的状态——创建态、就绪态 进程正在被创建时,它的状态是“创建态”,在这个阶段操作系统会为进程分配资源、初始化PCB。 当进程创建完成后,便进入“就绪态”,处于就绪态的进…

如何在Windows系统中检测和结束运行中的程序(任务管理器显示运行程序可能有bug)

如何在Windows系统中检测和结束运行中的程序 在Windows系统的日常使用和管理过程中,我们经常需要检测某个程序是否正在运行,并在必要时结束它。本文将详细介绍如何在Windows系统中检测运行中的程序,并提供多种方法来结束这些程序。 检测运行…

Vue思维导图,复习+预习,其中有些已经弃用了,下期总结下

1、学前了解 2、基础知识 3、组件相关语法 4、高级语法 5、compositionAPI 6、配套工具

QML 高效开发之加载方式

背景 日常使用 QML开发软件过程中,默认使用 qrc 存在开发效率慢问题,比如每次修改界面内容后需要先构建才能看到实际效果,尤其在频繁调试界面样式时显得更繁琐 原理 Qt 中的资源分为两类,编译型和外部二进制资源 编译型资源每…

⭐北邮复试刷题105. 从前序与中序遍历序列构造二叉树__递归分治 (力扣每日一题)

105. 从前序与中序遍历序列构造二叉树 给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。 示例 1: 输入: preorder [3,9,20,15,7], inorder [9,3,15,…

朋友圈程序全开源版源码,附带系统搭建教程

前台一键发布图文,视频,音乐。发布内容支持定位或自定义位置信息。支持将发布内容设为广告模式消息站内通知或邮件通知。支持其他用户注册,支持其他用户发布文章,管理自己的文章。拥有丰富的后台管理功能,一键操作。安装环境 Nginx ≥1.22 …

stm32——hal库学习笔记(外部中断)

一、什么是中断?(了解) 打断CPU执行正常的程序,转而处理紧急程序,然后返回原暂停的程序继续运行,就叫中断 中断的作用和意义 中断的意义:高效处理紧急程序,不会一直占用CPU资源 S…

Android14 InputManager-InputManagerService环境的构造

IMS分为Java层与Native层两个部分,其启动过程是从Java部分的初始化开始,进而完成Native部分的初始化。 □创建新的IMS对象。 □调用IMS对象的start()函数完成启动 同其他系统服务一样,IMS在SystemServer中的ServerT…

浅谈加密算法(对称加密、非对称加密、混合加密、数字签名、哈希函数)

1、对称加密 对称加密只有一个密钥,直接使用这一个密钥对信息进行加密或解密。这样子就使得对称加密解密十分高效,计算量也相较于非对称加密小很多,适合有大量数据的场合。 密钥只有一个且他一定不能泄漏。由此分发密钥,讲这个密钥…

聚合支付,聚合系统,聚合程序或将成为主流

支付市场的变化对用户、代理商和运营商产生了重大影响。 随着政策监管的日益严格,支付行业逐渐朝着标准化和合理化的方向发展,日益增强其安全性。在这个背景下,聚合平台已经成为未来支付行业发展的重要趋势。特别是在“一机一码”政策实施后&…