挑战30天学完Python:Day16 日期时间
📘 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, time 和 timedelta 这几个。
获取 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:00t1 = 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-07yestoday = today + timedelta(days=-1)
print(yestoday) # 2023-01-06
🌕 你是如此的努力。你已经在伟大python学习之路上行走了16步了。课后让我们按惯例做些练习吧
💻 第16天练习
- 使用 datetime 模块分别获取年、月、日、时、分 和 时间戳信息
- 使用
%m/%d/%Y, %H:%M:%S格式输出当前时间 - 如果时间是 “2023年1月1日”,将此字符串时间转成时间类型
- 计算当前时间和元旦那天的时间差
- 计算当前时间距离1970年1月1的时间差或时间戳
- 思考题:想想这个 datetime 模块可以实际应用在那些编码场景中呢?
🎉 CONGRATULATIONS ! 🎉
相关文章:
挑战30天学完Python:Day16 日期时间
📘 Day 16 🎉 本系列为Python基础学习,原稿来源于 30-Days-Of-Python 英文项目,大奇主要是对其本地化翻译、逐条验证和补充,想通过30天完成正儿八经的系统化实践。此系列适合零基础同学,或仅了解Python一点…...
Web3之光:揭秘数字创新的未来
随着数字化时代的深入发展,Web3正以其独特的技术和理念,为我们打开数字创新的崭新视角。作为数字化时代的新兴力量,Web3将深刻影响着我们的生活、工作和社会。本文将揭秘Web3的奥秘,探讨其在数字创新领域的前景和潜力。 1. 重新定…...
Stable Diffusio——采样方法使用与原理详解
简介 当使用稳定扩散(Stable Diffusion)技术生成图像时,首先会生成一张带有噪声的图像。然后,通过一系列步骤逐渐去除图像中的噪声,这个过程类似于从一块毛坯的白色大理石开始,经过多日的精细雕刻…...
小米14 ULTRA:重新定义手机摄影的新篇章
引言 随着科技的飞速发展,智能手机已经不仅仅是一个通讯工具,它更是我们生活中的一位全能伙伴。作为科技领域的佼佼者,小米公司再次引领潮流,推出了全新旗舰手机——小米14 ULTRA。这款手机不仅在性能上进行了全面升级&am…...
【leetcode热题】路径总和 II
难度: 中等通过率: 38.7%题目链接:. - 力扣(LeetCode) 题目描述 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。 说明: 叶子节点是指没有子节点的节点。 示例: …...
ChatGPT在数据处理中的应用
ChatGPT在数据处理中的应用 今天的这篇文章,让我不断体会AI的强大,愿人类社会在AI的助力下走向更加灿烂辉煌的明天。 扫描下面二维码注册 数据处理是贯穿整个数据分析过程的关键步骤,主要是对数据进行各种操作,以达到最终的…...
微服务-Alibaba微服务nacos实战
1. Nacos配置中心 1.1 微服务为什么需要配置中心 在微服务架构中,当系统从一个单体应用,被拆分成分布式系统上一个个服务节点后,配置文件也必须跟着迁移(分割),这样配置就分散了,不仅如此&…...
Linux Driver | 设备树开发之初识设备树
Linux Driver | 设备树开发之初识设备树 时间:2024年2月22日20:35:13 文章目录 **Linux Driver** | 设备树开发之初识设备树参考1.设备树开发2.`Linux`设备树的由来3.`Linux`设备树的由来-为什么会有设备树4.设备树的由来5.快速编译设备树---**DTC** (`device tree compiler`)…...
2月24日(周六)比赛前瞻:曼联 VS 富勒姆、拜仁 VS 莱比锡
大家好,博主将持续更新胜负14场前瞻,此处每日赛事间歇更新,胃信号每日更新。 精选赛事:曼联 VS 富勒姆 曼联近期状态显著提升,上一轮联赛客场2-1战胜卢顿,连续7场正赛取得6胜1平的成绩,保持不败…...
React18源码: task任务调度和时间分片
任务队列管理 调度的目的是为了消费任务,接下来就具体分析任务队列是如何管理与实现的 在 Scheduler.js 中,维护了一个 taskQueue, 任务队列管理就是围绕这个 taskQueue 展开 // Tasks are stored on a min heap var taskQueue - []; var timerQueue …...
【工具类】阿里域名关联ip(python版)
获取代码如下 # codingutf-8import argparse import json import urllib import logging# 加载 ali 核心 SDK from aliyunsdkcore.client import AcsClient from aliyunsdkalidns.request.v20150109 import (DescribeSubDomainRecordsRequest,AddDomainRecordRequest,UpdateDo…...
STM32自学☞输入捕获测频率和占空比案例
本文是通过PA0口输出PWM波,然后通过PA6口捕获PWM波的频率和占空比,最终在oled屏上显示我们自己设置的频率和占空比。由于和前面的pwm呼吸灯代码有重合部分所以本文中的代码由前者修改而来,对于文件命名不要在意。 pwm_led.c文件 /* 编写步…...
[yolov9]使用python部署yolov9的onnx模型
【框架地址】 https://github.com/WongKinYiu/yolov9 【yolov9简介】 在目标检测领域,YOLOv9 实现了一代更比一代强,利用新架构和方法让传统卷积在参数利用率方面胜过了深度卷积。 继 2023 年 1 月 正式发布一年多以后,YOLOv9 终于来了&a…...
ShellExecute的用法
1、标准用法 ShellExecute函数原型及参数含义如下: function ShellExecute(hWnd: HWND; Operation, FileName, Parameters,Directory: PChar; ShowCmd: Integer): HINST; stdcall; ●hWnd:用于指定父窗口句柄。当函数调用过程出现错误时,它将…...
蓝桥杯:递增三元组
题目 递增三元组(2018年蓝桥杯真题) 题目描述: 给定三个整数数组 A [A1, A2, … AN], B [B1, B2, … BN], C [C1, C2, … CN], 请你统计有多少个三元组(i, j, k) 满足: 1 < i, j, k < N Ai < Bj &…...
目标检测卷王YOLO卷出新高度:YOLOv9问世
论文摘要:如今的深度学习方法重点关注如何设计最合适的目标函数,使得模型的预测结果能够最接近真实情况。 同时,必须设计一个适当的架构,可以帮助获取足够的信息进行预测。 现有方法忽略了一个事实,即当输入数据经过逐层特征提取和空间变换时,大量信息将会丢失。 本文将深…...
华为---RSTP(二)---RSTP基本配置示例
目录 1. 示例要求 2. 网络拓扑图 3. 配置命令 4. 测试终端连通性 5. RSTP基本配置 5.1 启用STP 5.2 修改生成树协议模式为RSTP 5.3 配置根交换机和次根交换机 5.4 设置边缘端口 6. 指定端口切换为备份端口 7. 测试验证网络 1. 示例要求 为防止网络出现环路…...
【Python笔记-设计模式】装饰器模式
一、说明 装饰器模式是一种结构型设计模式,旨在动态的给一个对象添加额外的职责。 (一) 解决问题 不改变原有对象结构的情况下,动态地给对象添加新的功能或职责,实现透明地对对象进行功能的扩展。 (二) 使用场景 如果用继承来扩展对象行…...
二十八、图像的高斯模糊操作
项目功能实现:对一张图片进行高斯模糊操作 按照之前的博文结构来,这里就不在赘述了 更多的图像模糊操作原理可参考博文:七、模糊操作,里面有详细原理讲解,只不过代码是python写的。 一、头文件 gaussian_blur.h #p…...
开源分子对接程序rDock的安装及使用流程
欢迎浏览我的CSND博客! Blockbuater_drug …点击进入 前言 本文介绍开源分子对接程序rDock在Linux Ubuntu 22.04系统上的conda安装、编译安装过程及程序使用流程。 一、rDock是什么? rDock来源 rDock是一个快速、多功能的开源对接程序,可用…...
避坑指南:解决多Livox雷达在ROS中TF树报错‘extrapolation into the past’的完整流程
避坑指南:解决多Livox雷达在ROS中TF树报错‘extrapolation into the past’的完整流程 当你在ROS系统中整合多个Livox雷达时,突然遭遇[WARN] Lookup would require extrapolation into the past的警告信息,Rviz中点云显示异常或TF树断裂&…...
Conda镜像源配置的3个高级玩法与1个常见大坑:不止是换URL那么简单
Conda镜像源配置的3个高级玩法与1个常见大坑:不止是换URL那么简单 当你在团队协作中遇到TensorFlow版本冲突,或是Docker构建时因网络问题卡在Solving environment步骤,基础镜像源切换早已不够用。真正的高手会在.condarc里埋下这些彩蛋&#…...
GLM-4V-9B Streamlit交互设计解析:侧边栏上传+实时渲染+历史回溯实现
GLM-4V-9B Streamlit交互设计解析:侧边栏上传实时渲染历史回溯实现 1. 引言 你有没有遇到过这样的情况:拿到一个功能强大的AI模型,官方给的示例代码却在自己的电脑上跑不起来,要么是显存不够,要么是各种奇怪的报错&a…...
5分钟快速搭建你的第一个Gemini AI智能体应用:完整开发指南
5分钟快速搭建你的第一个Gemini AI智能体应用:完整开发指南 【免费下载链接】gemini-fullstack-langgraph-quickstart Get started with building Fullstack Agents using Gemini 2.5 and LangGraph 项目地址: https://gitcode.com/gh_mirrors/ge/gemini-fullstac…...
一天一个开源项目(第57篇):Unsloth - 2x 更快、70% 更省显存的 LLM 微调库
引言 “Train gpt-oss, DeepSeek, Gemma, Qwen & Llama 2x faster with 70% less VRAM!” 这是「一天一个开源项目」系列的第 57 篇文章。今天介绍的项目是 Unsloth(GitHub)。 想在自己的 GPU 上微调大模型,却苦于显存不足、训练太慢&am…...
5分钟搞定!用DeePseek+PS批量修图(附JSX脚本生成技巧)
5分钟搞定!用DeePseekPS批量修图(附JSX脚本生成技巧) 每次处理上百张产品图时,最头疼的就是重复调整尺寸、统一分辨率这些机械操作?作为电商运营,我经历过无数次深夜加班修图的痛苦,直到发现这个…...
红枣切片机的设计【说明书+CAD图纸+solidworks三维+开题报告+答辩PPT】
红枣切片机的设计聚焦于提升切片效率与切片质量,其核心作用在于通过机械结构优化与传动系统设计,实现红枣的自动化、标准化切片加工。设备采用旋转刀盘与固定进料轨道的协同工作模式,刀盘以均匀转速旋转,红枣在重力与轨道约束下依…...
Codex CLI 配置避坑指南:从 TOML 语法到沙箱策略的 5 个实战技巧
Codex CLI 配置避坑指南:从 TOML 语法到沙箱策略的 5 个实战技巧 如果你已经初步了解 Codex CLI 的基本用法,但在实际配置过程中频繁踩坑,这篇文章就是为你准备的。我们将深入探讨那些官方文档没有详细说明的细节问题,以及如何通过…...
如何通过CPUDoc免费优化CPU性能:5大核心功能全面指南
如何通过CPUDoc免费优化CPU性能:5大核心功能全面指南 【免费下载链接】CPUDoc 项目地址: https://gitcode.com/gh_mirrors/cp/CPUDoc 还在为电脑运行卡顿、游戏帧率不稳而烦恼吗?CPUDoc这款免费开源工具能够通过智能线程调度和动态电源管理&…...
FireRedASR-AED-L语音搜索应用:电商场景实战
FireRedASR-AED-L语音搜索应用:电商场景实战 1. 引言 想象一下这个场景:一位正在做饭的用户手上沾满面粉,突然想起需要购买烘焙材料,只需对着手机说"帮我找高筋面粉",下一秒就能看到精准的商品搜索结果。这…...
