Python-datetime、time包常用功能汇总

news2025/7/19 14:29:16

目录

  • 基础知识
    • 时间格式有哪些?
    • Python中的时间格式化
    • 时间戳
  • datetime
    • date
    • datetime
    • timedelta
  • time
  • 常用
    • 获取今天凌晨字符串?
    • 将一个时间格式的字符串转为时间戳
    • 将一个时间戳转为指定格式的字符串
  • 全部代码
  • 参考


基础知识

时间格式有哪些?

  • 「格林威治标准时间」(Greenwich Mean Time,简称G.M.T.)以伦敦格林威治的子午线为基线,以地球自转为标准,全球都以此标准设定时间。
  • 世界协调时(Coordinated Universal Time,简称UTC)又称世界标准时间或世界协调时间,是最主要的世界时间标准,在时刻上尽量接近于格林尼治标准时间。对于大多数用途来说,UTC时间被认为能与GMT时间互换,基本相等,但GMT时间已不再被科学界所确定
  • 中国标准时间(CST):中国大陆、中国香港、中国澳门、中国台湾、蒙古国、新加坡、马来西亚、菲律宾、西澳大利亚州的时间与UTC的时差均为+8,也就是UTC+8
  • ISO 8601 标准时间:在 ISO 8601 的表示中,日期和时间按照这样的顺序排列:大的单位(比如年)放在左边,小的单位依次往右排列。表示只能由阿拉伯数字和指定的特殊字符(比如"-“, “:”, “T”, “W”, “Z”)等组成,这样的话,日常常用的描述性的单词(比如"January”, “Thursday”, or “New Year’s Day”)是不允许使用的

Python中的时间格式化

日期时间格式是指转为字符串时的格式化,可以自定义,有很多种,常见的有

  • UTC时间格式:“yyyy-mm-ddThh:mm:ssZ”,在Python中是"%Y-%m-%dT%H:%M:%SZ"
  • 本地时间格式:“yyyy-mm-dd hh:mm:ss”,在Python中是"%Y-%m-%d %H:%M:%S"
  • 汉字表示格式:“yyyy年mm月dd日 hh时mm分ss秒”,在Python中是“%Y年%m月%d日 %H时%M分%S秒”

指令

含意

示例

备注

%a

当地工作日的缩写。

Sun, Mon, ..., Sat (en_US);
So, Mo, ..., Sa (de_DE)

(1)

%A

本地化的星期中每日的完整名称。

Sunday, Monday, ..., Saturday (en_US);
Sonntag, Montag, ..., Samstag (de_DE)

(1)

%w

以十进制数显示的工作日,其中0表示星期日,6表示星期六。

0, 1, ..., 6

%d

补零后,以十进制数显示的月份中的一天。

01, 02, ..., 31

(9)

%b

当地月份的缩写。

Jan, Feb, ..., Dec (en_US);
Jan, Feb, ..., Dez (de_DE)

(1)

%B

本地化的月份全名。

January, February, ..., December (en_US);
Januar, Februar, ..., Dezember (de_DE)

(1)

%m

补零后,以十进制数显示的月份。

01, 02, ..., 12

(9)

%y

补零后,以十进制数表示的,不带世纪的年份。

00, 01, ..., 99

(9)

%Y

十进制数表示的带世纪的年份。

0001, 0002, ..., 2013, 2014, ..., 9998, 9999

(2)

%H

以补零后的十进制数表示的小时(24 小时制)。

00, 01, ..., 23

(9)

%I

以补零后的十进制数表示的小时(12 小时制)。

01, 02, ..., 12

(9)

%p

本地化的 AM 或 PM 。

AM, PM (en_US);
am, pm (de_DE)

(1), (3)

%M

补零后,以十进制数显示的分钟。

00, 01, ..., 59

(9)

%S

补零后,以十进制数显示的秒。

00, 01, ..., 59

(4), (9)

%f

微秒作为一个十进制数,零填充到 6 位。

000000, 000001, ..., 999999

(5)

%z

UTC 偏移量,格式为 ±HHMM[SS[.ffffff]] (如果是简单型对象则为空字符串)。

(空), +0000, -0400, +1030, +063415, -030712.345216

(6)

%Z

时区名称(如果对象为简单型则为空字符串)。

(空), UTC, GMT

(6)

%j

以补零后的十进制数表示的一年中的日序号。

001, 002, ..., 366

(9)

%U

以补零后的十进制数表示的一年中的周序号(星期日作为每周的第一天)。 在新的一年中第一个星期日之前的所有日子都被视为是在第 0 周。

00, 01, ..., 53

(7), (9)

%W

以补零后的十进制数表示的一年中的周序号(星期一作为每周的第一天)。 在新的一年中第一个星期一之前的所有日子都被视为是在第 0 周。

00, 01, ..., 53

(7), (9)

%c

本地化的适当日期和时间表示。

Tue Aug 16 21:30:00 1988 (en_US);
Di 16 Aug 21:30:00 1988 (de_DE)

(1)

%x

本地化的适当日期表示。

08/16/88 (None);
08/16/1988 (en_US);
16.08.1988 (de_DE)

(1)

%X

本地化的适当时间表示。

21:30:00 (en_US);
21:30:00 (de_DE)

(1)

%%

字面的 '%' 字符。

%

时间戳

时间戳一般指的是Unix时间/POSIX时间,从1970-01-01 00:00:00到当前的秒数,一般使用10位或13表示

datetime

date

属性(只读)

  • year:int类型,如2023
  • month:int类型,如2
  • day::int类型,如21

方法

  • today:返回当前日期,转字符串使用iso格式,例如 2023-02-21
  • fromtimestamp:从时间戳返回当地时间
  • replace:返回一个date,可以通过参数修改year month day,会进行检查,不符合抛异常ValueError
  • strftime:按照格式返回字符串

datetime

属性(只读)

  • year:int类型,如2023
  • month:int类型,如2
  • day:int类型,如21
  • hour:int类型,小时
  • minute:int类型,分钟
  • second:int类型,秒
  • microsecond:int类型,毫秒

方法

  • today、now:返回本地当前日期时间,例如,2023-02-21 21:09:07.915277
  • utcnow:返回utc时间,即北京时间的8个小时前
  • timestamp
  • fromtimestamp:从时间戳获取本地时间
  • utcfromtimestamp:从时间戳获取utc时间
  • date:返回日期对象
  • time:返回时间对象
  • replace:返回一个datetime对象,可通过参数修改,会进行检查,不符合抛异常ValueError
  • strftime:按照格式返回字符串
  • strptime:返回一个对应于 date_string,根据 format 进行解析得到的 datetime 对象。

timedelta

timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0) 用于表示两个时间的间隔
用这个就比较方便,比如,计算昨天,自己写的话还要考虑月份的天数,这个直接减去即可

time

方法

  • time:返回时间戳,float类型
  • localtime:获得时间元组,secs参数可选,接受float
  • mktime:这是 localtime() 的反函数,时间参数t,返回对应的一个float值
  • sleep:程序睡眠,secs参数代表睡眠秒数
  • strftime:返回指定format格式的字符串,t参数可选,默认为localtime返回的值
  • strptime:将string按照指定格式解析,返回一个时间元组

常用

我们常常收到和发送的都是字符串,这里就以字符串处理为例

获取今天凌晨字符串?

def get_today_format(format="%Y-%m-%d 00:00:00"):
    str_time = datetime.today().strftime(format)
    return str_time

默认返回今天凌晨的字符串,可以修改格式

将一个时间格式的字符串转为时间戳

def get_time_stamp(str_time,format="%Y-%m-%dT%H:%M:%SZ") -> float:
    s_t = time.strptime(str_time,format)
    mkt = time.mktime(s_t) * 1000
    return mkt

def get_date_time_stamp(str_time,format="%Y-%m-%dT%H:%M:%SZ") -> float:
    date_time = datetime.strptime(str_time,format)
    time_stamp = date_time.timestamp()*1000
    return time_stamp

将一个时间戳转为指定格式的字符串

def get_str_by_timestamp(timestamp=time.time(),format="%Y-%m-%d %H:%M:%S"):
    time_tuple = time.localtime(float(timestamp))
    str_time = time.strftime(format,time_tuple)
    return str_time

全部代码

from datetime import date,datetime,timedelta
import time

local_format = "%Y-%m-%d %H:%M:%S"
utc_format = "%Y-%m-%dT%H:%M:%SZ"
chinese_format = "%Y年%m月%d日 %H时%M分%S秒"


def date_test():
    year,month,day = date.today().year,date.today().month,date.today().day
    print(type(year),year,month,day)
    today = date.today()
    print(type(today), str(today))
    timestamp = date.today().fromtimestamp(datetime.now().timestamp())
    print(timestamp)
    today_but_28 = date.today().replace(day=28)
    print(today_but_28)
    today_format =  today.strftime("%Y/%m/%d")
    print(today_format)
    date_time_format = datetime.strptime(today_format,"%Y/%m/%d")
    print(date_time_format)

def datetime_test():
    today,now = datetime.today(),datetime.now()
    print(type(today),today,now)
    year,month,day= now.year,now.month,now.day
    hour, minute, second = now.hour,now.minute,now.second
    print(type(year),year,month,day)
    print(type(hour),hour,minute,second)
    utcnow = datetime.utcnow()
    print(utcnow)
    date,time = now.date(),now.time()
    print(type(date),date)
    print(type(time),time)
    today_but_28 = now.replace(day=28,minute=59)
    print(today_but_28)
    today_format = now.strftime("%Y/%m/%d %H:%M:%S")
    print(today_format)

def time_delta_test():
    one_day,one_hour = timedelta(days=1),timedelta(hours=1)
    yesterday_same_time = datetime.now() - one_day
    one_hour_later = datetime.now() + one_hour
    print(yesterday_same_time)
    print(one_hour_later)

def time_test():
    time_stamp_float = time.time()
    print(time_stamp_float)
    s = time.localtime(time_stamp_float)
    print(s)
    time_float = time.mktime(s)
    print(time_float)
    local_str = time.strftime(local_format)
    print(local_str)
    default_format_time = time.strptime(local_str,local_format)
    print(default_format_time)
    time.sleep(1)


def get_today_format(format="%Y-%m-%d 00:00:00"):
    str_time = datetime.today().strftime(format)
    return str_time


def get_time_stamp(str_time,format="%Y-%m-%dT%H:%M:%SZ") -> float:
    s_t = time.strptime(str_time,format)
    mkt = time.mktime(s_t) * 1000
    return mkt

def get_date_time_stamp(str_time,format="%Y-%m-%dT%H:%M:%SZ") -> float:
    date_time = datetime.strptime(str_time,format)
    time_stamp = date_time.timestamp()*1000
    return time_stamp

def get_str_by_timestamp(timestamp=time.time(),format="%Y-%m-%d %H:%M:%S"):
    time_tuple = time.localtime(float(timestamp))
    str_time = time.strftime(format,time_tuple)
    return str_time


def main():
    # date_test()
    # datetime_test()
    # time_delta_test()
    # time_test()
    # print(get_today_format())
    # print(get_time_stamp('2023-02-17T11:30:52Z'))
    # print(get_date_time_stamp('2023-02-17T11:30:52Z'))
    print(get_str_by_timestamp())

if __name__ == '__main__':
    main()

截图如下:
在这里插入图片描述

思考:

  1. 使用datetime包完成 将一个时间戳转为指定格式的字符串
  2. 如何写一个函数,获取当前本地时间减去一个时间间隔的utc格式的字符串?
  3. 如何写一个函数,将时间格式字符串转为另一时间格式字符串?

参考

python - datetime
python - time
GMT、UTC、ISO、CST、timestamp 等格式
在线时间戳转换工具

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

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

相关文章

windows版 redis在同一局域网下互联

项目场景: 同一局域网下各个主机互相连接同一个redis 问题描述 无法连接 原因分析: 没有放行对方的地址 解决方案: 修改配置文件 最重要的一步如下 然后把 redis.windows.conf的文件也照上面的修改一下保持一致 然后安装一下redis服务这…

注意力机制详解系列(一):注意力机制概述

👨‍💻作者简介: 大数据专业硕士在读,CSDN人工智能领域博客专家,阿里云专家博主,专注大数据与人工智能知识分享。 🎉专栏推荐: 目前在写CV方向专栏,更新不限于目标检测、…

掌握饮食健康:了解你的宏量营养素摄入

谷禾健康 // 俗话说“病从口入”,我们的健康状况很大一部分取决于饮食。而食物基本上是由各种营养素构成的。 宏量营养素是人体大量需要的必需营养成分。宏量营养素指的是“三大”营养素:蛋白质、脂肪和碳水化合物,它们是我们饮食中的关键。 …

494.目标和

1. 回溯算法 这题和之前做的那些排列、组合的回溯稍微有些不同,你不需要每次选数据时都是for遍历去选择,很明显这是顺序选择的 比如 数组[0,1],target1; 递归数组,每个元素都 或者 - ,然后取最后结果为0…

Mysql是怎样运行的之Inno页介绍

一、InnoDB介绍 InnoDB是一个将表中的数据存储到磁盘上的存储引擎,所以即使关机后重启我们的数据还是存在的。而真正处理数据的过程是发生在内存中的,所以需要把磁盘中的数据加载到内存中,如果是处理写入或修改请求的话,还需要把内…

Java数据结构 —— 手写线性结构(稀疏数组、栈、队列、链表)

目录 稀疏数组 顺序表 链表 单向顺序链表 双向链表 双向循环链表求解约瑟夫环(Joseph) 栈 顺序栈 队列 顺序队列 顺序循环队列 稀疏数组 当一个数组中大部分值为0,或者相同时,可以采用稀疏数组的方式来保存,从而节约存储…

代码随想录算法训练营day41 | 动态规划 01背包问题基础 01背包问题之滚动数组

01背包问题基础 问题描述 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。 举个栗子 背包最大重量为4。 物品为: 重量价值…

文本生成图像简述4——扩散模型、自回归模型、生成对抗网络的对比调研

基于近年来图像处理和语言理解方面的技术突破,融合图像和文本处理的多模态任务获得了广泛的关注并取得了显著成功。 文本生成图像(text-to-image)是图像和文本处理的多模态任务的一项子任务,其根据给定文本生成符合描述的真实图像…

VUE3源码分析————rollup打包

文章目录什么是rolluprollup打包和webpack打包的区别rollup打包准备一、安装yarn开始rollup打包一、初始化二、package.json文件配置三、新建并配置打包文件夹四、下载rollup及打包执行文件五、文件大致分布![image.png](https://img-blog.csdnimg.cn/img_convert/66f1a85ff57d…

基于servlet学生宿舍管理系统

一、项目简介 本项目是一套javaWeb基于servlet学生宿舍管理系统,主要针对计算机相关专业的正在做bishe的学生和需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本等,该项目可以直接作为bishe使用。 项目都经过严格调试,…

【Unity VR开发】结合VRTK4.0:创建物理按钮

语录: 如今我努力奔跑,不过是为了追上那个曾经被寄予厚望的自己 前言: 使用线性关节驱动器和碰撞体从动器可以轻松创建基于物理的按钮,以使交互者能够在物理上按下按钮控件,然后挂钩到驱动器事件中以了解按钮何时被按…

追梦之旅【数据结构篇】——详解C语言实现顺序队列

详解C语言实现顺序队列~😎前言🙌预备小知识🙌队列的概念及结构😊1.顺序队列头文件编写🙌2.Queue.c文件的编写🙌1)队列的初始化函数实现😊2)队列的销毁函数实现&#x1f6…

Leetcode DAY 44: 完全背包 and 零钱兑换 II and 组合总和 Ⅳ

完全背包518. 零钱兑换 II&#xff01;&#xff01;&#xff01;程序未通过原因&#xff1a; 1、dp数组的初始化没考虑清楚 2、组合问题 dp数组的更新没考虑清楚 修改后&#xff1a; class Solution { public:int change(int amount, vector<int>& coins) {// dp[j…

python保留小数函数总结

python保留小数——‘%f’‘%.nf’% x&#xff08;定义的变量&#xff09; 例子&#xff1a;a 82.16332 print(%.1f% a) print(%.2f% a) print(%.3f% a) print(%.4f% a) print(%.10f% a)输出结果python保留小数——format&#xff08;&#xff09;函数Python2.6 开始&#xff…

【Zotero】文献阅读神器Zotero打造个人移动图书馆

1、 将zotero portable版装入移动硬盘 zotero portable下载链接 2、 安装zotfile管理附件 官网&#xff1a;http://zotfile.com/ 下载好之后&#xff0c;打开Zotero&#xff0c;依次点击菜单栏工具&#xff08;tools&#xff09;-插件&#xff08;Add-ons&#xff09;&#…

Vue3 中组件的使用(上)

目录前言&#xff1a;一、什么是组件二、注册组件1. 全局注册2. 局部注册二、传递数据【父 -> 子】1. 字符串数组的形式2. 对象的形式三、组件事件【子 -> 父】1. 字符串数组式声明自定义事件2. 【子组件】触发组件事件3. 【父组件】监听子组件自定义事件4. 组件事件例子…

【大数据】记一次hadoop集群missing block问题排查和数据恢复

问题描述 集群环境总共有2个NN节点&#xff0c;3个JN节点&#xff0c;40个DN节点&#xff0c;基于hadoop-3.3.1的版本。集群采用的双副本&#xff0c;未使用ec纠删码。 问题如下&#xff1a; bin/hdfs fsck -list-corruptfileblocks / The list of corrupt files under path…

AI算法创新赛-人车目标检测竞赛总结04

队伍&#xff1a;AI000038 小组成员&#xff1a;杨志强&#xff0c;林松 1. 算法介绍 1.1 相关工作 当前流行的目标检测算法主要分为三种&#xff0c;一阶段算法&#xff1a;SSD&#xff0c;FCOS&#xff0c;Scaled&#xff0c;YOLO系列等&#xff1b;二阶段算法&#xff1a…

宝塔搭建实战php悟空CRM前后端分离源码-后端server篇(一)

大家好啊&#xff0c;我是测评君&#xff0c;欢迎来到web测评。 有个朋友发消息跟我说&#xff0c;能不能让我录制一期一套开源的悟空CRM系统&#xff0c;然后网上搜了下&#xff0c;搭建起来测试后&#xff0c;感觉还不错&#xff0c;是一套前后端分离的CRM系统&#xff0c;前…

Java浅析电信数据采集

技术&#xff1a;Java等摘要&#xff1a;电信运营系统中&#xff0c;电信计费系统是主要的支撑系统&#xff0c;占有重要地位。对于电信计费系统是电信运营商的核心竞争力之一这一观点愈来愈被业界认同。电信计费系统中的数据蕴含着企业经营态势、客户群分布特征及消费习惯、各…