Python --datetime模块

目录

1, 获取datetime时间

2, datetime与timestamp转换

2-1, datetime转timestamp

2-2, timestamp转datetime

3, str格式与datetime转换

3-1, datetime转str格式

3-2, str格式转datetime

4, datetime运算

4-1, datetime之间运算

4-2, 通过timedelta加减

5, 时区转换

5-1, 本地时间转换为UTC时间

5-2, 时区间转换

6, 带时区datetime转换为timestamp


datetime是python的内置模块, 直接导入即可使用

1, 获取datetime时间

In [59]: from datetime import datetime# 当前时间转换为datetime格式
In [60]: now = datetime.now()In [61]: now
Out[61]: datetime.datetime(2023, 8, 29, 21, 58, 51, 671852)# 设置一个datetime时间
In [64]: dt = datetime(2023, 8, 29, 22, 1, 10)In [65]: dt
Out[65]: datetime.datetime(2023, 8, 29, 22, 1, 10)

2, datetime与timestamp转换

2-1, datetime转timestamp

In [92]: from datetime import datetimeIn [93]: now = datetime.now()# 获取当前系统时间的datetime
In [94]: now
Out[94]: datetime.datetime(2023, 8, 29, 15, 46, 41, 445550)# datetime转换为timestamp
In [96]: now.timestamp()
Out[96]: 1693295201.44555

2-2, timestamp转datetime

# timestamp转换为datetime
In [80]: t = datetime.now().timestamp()In [81]: t
Out[81]: 1693317944.383471In [82]: datetime.fromtimestamp(t)
Out[82]: datetime.datetime(2023, 8, 29, 22, 5, 44, 383471)# 转换为标准的utc的datetime
In [84]: datetime.utcfromtimestamp(t)
Out[84]: datetime.datetime(2023, 8, 29, 14, 5, 44, 383471)

3, str格式与datetime转换

3-1, datetime转str格式

datetime转换为str,使用的方法是strftime()

# 获取时间的datetime格式
In [85]: now = datetime.now()In [86]: now
Out[86]: datetime.datetime(2023, 8, 29, 22, 8, 32, 807460)# datetime格式转换为字符串格式
In [87]: now.strftime('%Y-%m-%d %H:%M:%S')
Out[87]: '2023-08-29 22:08:05'

格式化字符:

%a:星期英文格式缩写

In [134]: datetime.now().strftime('%a')
Out[134]: 'Tue'

%A:星期英文格式全写

In [135]: datetime.now().strftime('%A')
Out[135]: 'Tuesday'

%w:星期数字格式

In [136]: datetime.now().strftime('%w')
Out[136]: '2'

%d:数字格式当月号数

# 当月29号
In [137]: datetime.now().strftime('%d')
Out[137]: '29'

%b:月份英文格式缩写

In [138]: datetime.now().strftime('%b')
Out[138]: 'Aug'

%B:月份英文格式全写

In [139]: datetime.now().strftime('%B')
Out[139]: 'August'

%m:月份数字格式

In [140]: datetime.now().strftime('%m')
Out[140]: '08'

%y:年份,仅显示后两位

# 表示23年
In [141]: datetime.now().strftime('%y')
Out[141]: '23'

%Y:年份,显示所有

In [142]: datetime.now().strftime('%Y')
Out[142]: '2023'

%H:24小时制显示小时

# 表示是16点钟
In [143]: datetime.now().strftime('%H')
Out[143]: '16'

%I:12小时制显示小时

# 表示四点钟
In [144]: datetime.now().strftime('%I')
Out[144]: '04'

%p:回显pm或am

In [146]: datetime.now().strftime('%p')
Out[146]: 'PM'

%M:分钟数

In [147]: datetime.now().strftime('%M')
Out[147]: '31'

%S:秒数

In [148]: datetime.now().strftime('%S')
Out[148]: '41'

%f:毫秒数

In [149]: datetime.now().strftime('%f')
Out[149]: '953566'

%j:表示当前是今年的第多少天

# 本年第241天
In [152]: datetime.now().strftime('%j')
Out[152]: '241'

%U:当年的第多少周(星期天作为一周第一天)

# 本年的第35周
In [153]: datetime.now().strftime('%U')
Out[153]: '35'

%w:当年的第多少周(星期一作为一周第一天)

# 本年第35周
In [155]: datetime.now().strftime('%W')
Out[155]: '35'

%c:英文格式的日期时间格式

In [160]: datetime.now().strftime('%c')
Out[160]: 'Tue Aug 29 16:42:30 2023'

%X:时间格式, 以“:”分割

In [161]: datetime.now().strftime('%X')
Out[161]: '16:43:00'

%x:日期格式,以反斜杠分割

In [162]: datetime.now().strftime('%x')
Out[162]: '08/29/23'

3-2, str格式转datetime

str格式的时间转换为datetime使用strptime方法

In [89]: str_time = '2023-08-29 22:08:32'In [90]: datetime.strptime(str_time, '%Y-%m-%d %H:%M:%S')
Out[90]: datetime.datetime(2023, 8, 29, 22, 8, 32)

4, datetime运算

4-1, datetime之间运算

datetime之间支持之间相减,不支持相加


# datetime之间相减
In [199]: datetime.now() - datetime(2023,1,1)
Out[199]: datetime.timedelta(days=240, seconds=62056, microseconds=554334)

4-2, 通过timedelta加减

使用timedelta需要先导入:from datetime import timedelta

In [200]: from datetime import timedelta# 加3天
In [201]: datetime.now() + timedelta(days=3)
Out[201]: datetime.datetime(2023, 9, 1, 17, 16, 36, 897620)# 减3天
In [203]: datetime.now() - timedelta(days=3)
Out[203]: datetime.datetime(2023, 8, 26, 17, 16, 46, 674351)# 加3小时
In [204]: datetime.now() + timedelta(hours=3)
Out[204]: datetime.datetime(2023, 8, 29, 20, 16, 53, 746510)# 减3小时
In [205]: datetime.now() - timedelta(hours=3)
Out[205]: datetime.datetime(2023, 8, 29, 14, 16, 57, 10485)# 加3分钟
In [206]: datetime.now() + timedelta(minutes=3)
Out[206]: datetime.datetime(2023, 8, 29, 17, 20, 11, 881435)# 减3分钟
In [207]: datetime.now() - timedelta(minutes=3)
Out[207]: datetime.datetime(2023, 8, 29, 17, 14, 15, 66273)

5, 时区转换

5-1, 本地时间转换为UTC时间

In [247]: from datetime import datetime, timedelta, timezone# 创建UTC-8时区
In [248]: tz_utc_8 = timezone(timedelta(hours=8))In [249]: now = datetime.now()In [250]: now
Out[250]: datetime.datetime(2023, 8, 29, 21, 10, 10, 583383)# 本地时间转换为UTC时间, tzinfo为时区属性
In [251]: dt = now.replace(tzinfo=tz_utc_8)In [252]: dt
Out[252]: datetime.datetime(2023, 8, 29, 21, 10, 10, 583383, tzinfo=datetime.timezone(datetime.timedelta(seconds=28800)))

5-2, 时区间转换

# 通过datetime.utcnow()获取utc时间,并设置为UTC0
In [38]: utc_dt = datetime.utcnow().replace(tzinfo=timezone.utc)In [39]: utc_dt
Out[39]: datetime.datetime(2023, 8, 29, 13, 40, 24, 247748, tzinfo=datetime.timezone.utc)# UTC0时区转换到UTC8时区
In [41]: bj_dt = utc_dt.astimezone(timezone(timedelta(hours=8)))In [42]: bj_dt
Out[42]: datetime.datetime(2023, 8, 29, 21, 40, 24, 247748, tzinfo=datetime.timezone(datetime.timedelta(seconds=28800)))# UTC8时区转换到UTC9时区
In [43]: dj_dt = utc_dt.astimezone(timezone(timedelta(hours=9)))In [44]: dj_dt
Out[44]: datetime.datetime(2023, 8, 29, 22, 40, 24, 247748, tzinfo=datetime.timezone(datetime.timedelta(seconds=32400)# 时区间转换
In [45]: bj_dt.astimezone(timezone(timedelta(hours=9)))
Out[45]: datetime.datetime(2023, 8, 29, 22, 40, 24, 247748, tzinfo=datetime.timezone(datetime.timedelta(seconds=32400)

6, 带时区datetime转换为timestamp

这样的好处在于timestamp和时区没有关系,达到正确存储的作用

import re
from datetime import datetime, timezone, timedeltadef datetime_to_timestamp(str_time, time_zone):dt = datetime.strptime(str_time, '%Y-%m-%d %H:%M:%S')# 将dt的时区替换为指定的时区dt_utc = dt.replace(tzinfo=timezone(timedelta(hours=int(re.search(r'[+-]\d+', time_zone).group()))))result = dt_utc.timestamp()return resultif __name__ == "__main__":t1 = datetime_to_timestamp('2015-6-1 08:10:30', 'UTC+7:00')assert t1 == 1433121030.0, t1t2 = datetime_to_timestamp('2015-5-31 16:10:30', 'UTC-09:00')assert t2 == 1433121030.0, t2

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

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

相关文章

数据结构:八种数据结构大全

数据结构 1.1 数据结构概述 数据结构是计算机存储、组织数据的方式;通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构的优良将直接影响着我们程序的性能;常用的数据结构有:数组(Array&#xff…

基于Qt5开发图形界面——WiringPi调用Linux单板电脑IO

Qt5——WiringPi Qt5WiringPi示例教程 Qt5 Qt是一种跨平台的应用程序开发框架。它被广泛应用于图形用户界面(GUI)开发,可以用于构建桌面应用程序、移动应用程序和嵌入式应用程序。Qt提供了丰富的功能和工具,使开发人员可以快速、高…

上滑动导航栏手势桌面最近任务可见解密-千里马手把手带你搞定framework车载车机系统开发

建议先看另一篇blog: https://blog.csdn.net/learnframework/article/details/123032419 系统如何让桌面执行对应的onStart方法呢? 具体的堆栈显示如下: makeActiveIfNeeded:5788, ActivityRecord (com.android.server.wm) makeVisibleIfNe…

回归预测 | MATLAB实现GWO-ELM灰狼算法优化极限学习机多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现GWO-ELM灰狼算法优化极限学习机多输入单输出回归预测(多指标,多图) 目录 回归预测 | MATLAB实现GWO-ELM灰狼算法优化极限学习机多输入单输出回归预测(多指标,多图)效果一览基本介绍程…

uniapp接入广告的问题总结

Uniapp官方解决方案 uni-app 支持接入uni-ad广告联盟,开发者可实现一次开发,多端变现。 uni-ad 支持开屏、信息流、激励视频、视频流、悬浮红包、推送等丰富的广告形式; uni-ad 聚合了全网所有主流广告源,包括腾讯优量汇、字节…

自动化测试(三):接口自动化pytest测试框架

文章目录 1. 接口自动化的实现2. 知识要点及实践2.1 requests.post传递的参数本质2.2 pytest单元测试框架2.2.1 pytest框架简介2.2.2 pytest装饰器2.2.3 断言、allure测试报告2.2.4 接口关联、封装改进YAML动态传参(热加载) 2.3 pytest接口封装&#xff…

RabbitMQ入门笔记

一、写在前面 什么是消息队列? 顾名思义,消息队列就是一个能够存放消息的队列,通常有一个生产者生产消息,一个或多个消费者消费消息。 消息队列在分布式系统中运用十分广泛,有异步处理、应用解耦、流量削峰等用途。…

【Vue3】transition 组件

1. 基础用法 <template><div class"content"><button click"flag !flag">switch</button><transition name"fade"><div v-if"flag" class"box"></div></transition><…

学习c++的第6天

#include <iostream> using namespace std; class Animal { public: virtual void perform()0; virtual ~Animal() { cout<<"Animal的析构函数"<<endl; } }; class Lion :public Animal { public : void perform() { cout<<"狮子…

政务大厅人员睡岗离岗玩手机识别算法

人员睡岗离岗玩手机识别算法通过pythonyolo系列网络框架算法模型&#xff0c;人员睡岗离岗玩手机识别算法利用图像识别和行为分析&#xff0c;识别出睡岗、离岗和玩手机等不符合规定的行为&#xff0c;并发出告警信号以提醒相关人员。Python是一种由Guido van Rossum开发的通用…

2023年PMP最后一次考试,应该如何把握?

2023年PMP最后一次考试&#xff0c;应该如何把握? 免费送备考资料。 一、什么时间报名和考试&#xff1f; 根据国内PMP考试的主办方中国国际人才交流基金会的通知&#xff0c;2023年的PMP考试一共有三次&#xff0c;分别是5月、8月、11月&#xff0c;11月的具体考试时间以官…

Unity引擎修改模型顶点色的工具

大家好&#xff0c;我是阿赵。   之前分享过怎样通过MaxScript在3DsMax里面修改模型的顶点色。不过由于很多时候顶点色的编辑需要根据在游戏引擎里面的实际情况和shader的情况来动态调整&#xff0c;所以如果能在引擎里面直接修改模型的顶点色&#xff0c;将会方便很多。于是…

【力扣每日一题】2023.8.24 统计参与通信的服务器

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 题目顾名思义&#xff0c;要我们统计参与通信的服务器&#xff0c;给我们一个二维矩阵&#xff0c;元素为1的位置则表示是一台服务器。 …

input子系统

内核分三层 1、事件处理层 2、核心层 3、设备驱动层 当硬件按下&#xff0c;在设备驱动中触发中断&#xff0c;中断程序会将事件上报给核心层 核心层将事件给事件处理层&#xff0c;最后事件处理层控制app应用层的怎么操作将数据发送到用户空间

PIP 常用操作汇总

1. 升级 python -m pip install --upgrade pip2. 列出所有安装包 pip list3. 查找特定包 pip list | findstr xxx4. 查看特定包 pip show xxx5. 安装软件包 pip install pyzmq24.0.16. 卸载软件包 pip uninstall -y pyzmq7. 查看配置 # 生效的配置&#xff08;global -&…

lnmp架构-nginx

6.nginx基础配置 证书 重定向&#xff08;80重定向到443&#xff09; 当访问http时 直接到 https 自动索引&#xff1a; 下载方便 Nginx缓存配置 &#xff1a;缓存可以降低网站带宽&#xff0c;加速用户访问 日志轮询 禁用不必要的日志记录 以节省磁盘IO的消耗 监控的信息 监…

Java实现根据关键词搜索1688商品新品数据方法,1688API节课申请指南

要通过1688的API获取商品新品数据&#xff0c;您可以使用1688开放平台提供的接口来实现。以下是一种使用Java编程语言实现的示例&#xff0c;展示如何通过1688开放平台API获取商品新品数据&#xff1a; 首先&#xff0c;确保您已注册成为1688开放平台的开发者&#xff0c;并创…

2.3 【MySQL】命令行和配置文件中启动选项的区别

在命令行上指定的绝大部分启动选项都可以放到配置文件中&#xff0c;但是有一些选项是专门为命令行设计的&#xff0c;比方说defaults-extra-file 、 defaults-file 这样的选项本身就是为了指定配置文件路径的&#xff0c;再放在配置文件中使用就没啥意义了。 如果同一个启动选…

HUT23级训练赛

目录 A - tmn学长的字符串1 B - 帮帮神君先生 C - z学长的猫 D - 这题用来防ak E - 这题考察FFT卷积 F - 这题考察二进制 G - 这题考察高精度 H - 这题考察签到 I - 爱派克斯&#xff0c;启动! J - tmn学长的字符串2 K - 秋奕来买瓜 A - tmn学长的字符串1 思路&#x…

Vue项目中app.js过大,导致web初始化加载过慢问题

1、删除多余不需要的库&#xff1a; npm uninstall xxx 如例如moment库文件是很大的可以直接放到index.html文件直接CDN引入 2、修改/config/index.js配置文件&#xff1a;将productionGzip设置为false ​ 3、设置vue-router懒加载 懒加载配置&#xff1a; ​ 非懒加载配置&…