当前位置: 首页 > news >正文

挑战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, 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: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天练习

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

🎉 CONGRATULATIONS ! 🎉

相关文章:

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

📘 Day 16 🎉 本系列为Python基础学习,原稿来源于 30-Days-Of-Python 英文项目,大奇主要是对其本地化翻译、逐条验证和补充,想通过30天完成正儿八经的系统化实践。此系列适合零基础同学,或仅了解Python一点…...

Web3之光:揭秘数字创新的未来

随着数字化时代的深入发展,Web3正以其独特的技术和理念,为我们打开数字创新的崭新视角。作为数字化时代的新兴力量,Web3将深刻影响着我们的生活、工作和社会。本文将揭秘Web3的奥秘,探讨其在数字创新领域的前景和潜力。 1. 重新定…...

Stable Diffusio——采样方法使用与原理详解

简介 当使用稳定扩散(Stable Diffusion)技术生成图像时,首先会生成一张带有噪声的图像。然后,通过一系列步骤逐渐去除图像中的噪声,这个过程类似于从一块毛坯的白色大理石开始,经过多日的精细雕刻&#xf…...

小米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:用于指定父窗口句柄。当函数调用过程出现错误时,它将…...

蓝桥杯:递增三元组

题目 递增三元组&#xff08;2018年蓝桥杯真题&#xff09; 题目描述&#xff1a; 给定三个整数数组 A [A1, A2, … AN], B [B1, B2, … BN], C [C1, C2, … CN]&#xff0c; 请你统计有多少个三元组(i, j, k) 满足&#xff1a; 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. 示例要求 为防止网络出现环路&#xf…...

【Python笔记-设计模式】装饰器模式

一、说明 装饰器模式是一种结构型设计模式&#xff0c;旨在动态的给一个对象添加额外的职责。 (一) 解决问题 不改变原有对象结构的情况下&#xff0c;动态地给对象添加新的功能或职责&#xff0c;实现透明地对对象进行功能的扩展。 (二) 使用场景 如果用继承来扩展对象行…...

二十八、图像的高斯模糊操作

项目功能实现&#xff1a;对一张图片进行高斯模糊操作 按照之前的博文结构来&#xff0c;这里就不在赘述了 更多的图像模糊操作原理可参考博文&#xff1a;七、模糊操作&#xff0c;里面有详细原理讲解&#xff0c;只不过代码是python写的。 一、头文件 gaussian_blur.h #p…...

开源分子对接程序rDock的安装及使用流程

欢迎浏览我的CSND博客&#xff01; Blockbuater_drug …点击进入 前言 本文介绍开源分子对接程序rDock在Linux Ubuntu 22.04系统上的conda安装、编译安装过程及程序使用流程。 一、rDock是什么&#xff1f; rDock来源 rDock是一个快速、多功能的开源对接程序&#xff0c;可用…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

测试markdown--肇兴

day1&#xff1a; 1、去程&#xff1a;7:04 --11:32高铁 高铁右转上售票大厅2楼&#xff0c;穿过候车厅下一楼&#xff0c;上大巴车 &#xffe5;10/人 **2、到达&#xff1a;**12点多到达寨子&#xff0c;买门票&#xff0c;美团/抖音&#xff1a;&#xffe5;78人 3、中饭&a…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...