Python将字符串转换为datetime

有这样一些字符串:

'1710903685'
'20240320110125'
'2024-03-20 11:01:25'

要转换成Python的datetime

代码如下:

import functools
import re
from datetime import datetime, timedelta
from typing import Union# pip install python-dateutil
from dateutil import parserdef convert_zone(func):@functools.wraps(func)def deco(*args, **kw):is_utc = kw.pop("is_utc", False)v = func(*args, **kw)if is_utc:v += timedelta(hours=8)return vreturn deco@convert_zone
def parse_time(s: Union[int, float, str], *, is_utc=False) -> datetime:"""将字符串或数值转换为datetimeUsage::>>> from datetime import datetime>>> parse_time(1710903685)datetime.datetime(2024, 3, 20, 11, 1, 25)>>> parse_time('1710903685')datetime.datetime(2024, 3, 20, 11, 1, 25)>>> parse_time('2024-03-20 11:01:25')datetime.datetime(2024, 3, 20, 11, 1, 25)>>> parse_time('20240320110125')datetime.datetime(2024, 3, 20, 11, 1, 25)>>> parse_time('20240320110125', is_utc=True)datetime.datetime(2024, 3, 20, 19, 1, 25)>>> parse_time(1710903685) == parse_time('1710903685') == parse_time('2024-03-20 11:01:25') == datetime(2024, 3, 20, 11, 1, 25)True>>> parse_time(1710903685.780527) == parse_time('1710903685.780527') == parse_time('2024-03-20 11:01:25.780527') == datetime(2024, 3, 20, 11, 1, 25, 780527)True>>> now = datetime.now()>>> timestamp = now.timestamp()>>> parse_time(str(now)) == now == parse_time(str(timestamp)) == parse_time(timestamp)True>>> try:...     parse_time('invalid time')... except ValueError as e:...     print(e)...Can't parse s='invalid time' to datetime"""if isinstance(s, (int, float)):return datetime.fromtimestamp(s)if s.isdigit():try:return datetime.fromtimestamp(int(s))except ValueError:passif re.match(r"\d+\.\d+$", s):return datetime.fromtimestamp(float(s))try:return parser.parse(s)except parser.ParserError as e:raise ValueError(f"Can't parse {s=} to datetime") from edef _test():import doctestdoctest.testmod(verbose=True)if __name__ == "__main__":  # pragma: no cover_test()

函数和单元测试都写好后,发现有些字符串是UTC时间,于是增加了装饰器和is_utc参数来转成北京时间.

单元测试结果如下:

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

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

相关文章

鸿蒙一次开发,多端部署(十五)常见问题

如何查询设备类型 设备类型分为default(默认设备)、tablet、tv、wearable、2in1等,有多种查询设备类型的方式。 通过命令行的方式查询设备类型。 通过命令行查询指定系统参数(const.product.devicetype)进而确定设备…

Linux(Centos)安装mysql 8 并且使用systemctl管理服务

1.下载mysql包 地址 MySQL :: Download MySQL Community Server (Archived Versions) 注:下载我圈住的减压之后里面会有tar.gz 再次减压才会是软件主体 2.安装和准备 yum -y install numactl 安装numactl tar -xvf mysql-8.0.30-el7-x86_64.tar 拆分 …

逆向爬虫技术的进阶应用与实战技巧

前言 在互联网的海洋中,数据是无价的财富。爬虫技术作为获取这些数据的重要手段,一直备受关注。然而,随着网站反爬虫机制的日益完善,简单的爬虫程序已经很难满足我们的需求。因此,掌握爬虫逆向技术,突破反爬…

【计算机网络篇】数据链路层(3)差错检测

文章目录 🥚误码🍔两种常见的检错技术⭐奇偶校验⭐循环冗余校验🎈例子 🥚误码 误码首先介绍误码的相关概念 🍔两种常见的检错技术 ⭐奇偶校验 奇校验是在待发送的数据后面添加1个校验位,使得添加该校验…

NVIDIA最新 Blackwell架构简介

NVIDIA Blackwell架构简介 在AI和大型语言模型(LLMs)迅速发展的领域中,追求实时性能和可扩展性至关重要。从医疗保健到汽车行业,组织正深入探索生成性AI和加速计算解决方案的领域。对生成性AI解决方案的需求激增,促使企…

【前端寻宝之路】学习和使用表单标签和表单控件

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法|MySQL| ​💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-cR8zvB8CkpxTk485 {font-family:"trebuchet ms",verdana,arial,sans-serif;f…

Linux——生产者消费者模型

为何要使用生产者消费者模型 生产者消费者模式就是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,…

MUNIK第二届功能安全及自动驾驶研讨会将在沪召开

2024年4月26日,由上海秒尼科技术服务有限公司(以下简称“Munik”)联合Parosoft主办的“第二届功能安全及自动驾驶研讨会”将在上海虹桥隆重开幕。 据了解,本次功能与自动驾驶安全研讨会,将聚焦在ISO 26262标准体系下,自动驾驶新形势下各个零部件供应商如何满足功能安全等相关重…

论文解读:Relational Embedding for Few-Shot Classification

文章汇总 问题 最近的方法通过元学习一个深度嵌入函数来解决小样本问题,使得嵌入空间上图像之间的距离符合它们的语义距离。然而,学习到的嵌入函数经常会过度拟合到不相关的特征[4,9,14],从而无法迁移到训练中尚未观察到的新类。 动机 与…

web自动化--元素定位之xpath和css

元素定位 xpath绝对路径相对路径案例xpath策略(路径)案例xpath策略(层级、扩展)属性层级与属性层级与属性拓展层级与属性综合 csscss选择器(id、类、标签、属性)id选择器类选择器标签选择器属性选择器案例-…

重看Spring聚焦BeanFactory分析

目录 一、理解BeanFactory (一)功能性理解 (二)BeanFactory和它的子接口 (三)BeanFactory的实现类 二、BeanFactory根接口 (一)源码展示和理解 (二)基…

增强现实(AR)在广告中的力量

The Power of AR in Advertising 写在前面 增强现实(AR -Augmented Reality)是指借助软件、应用程序和智能手机、平板电脑或耳机等设备,为日常生活添加视觉和音频元素的技术。如今,品牌和广告商可以在营销活动中使用AR&#xff0…

IT运维服务规范标准与实施细则

一、 总则 本部分规定了 IT 运维服务支撑系统的应用需求,包括 IT 运维服务模型与模式、 IT 运维服务管理体系、以及 IT 运维服务和管理能力评估与提升途径。 二、 参考标准 下列文件中的条款通过本部分的引用而成为本部分的条款。凡是注日期的引用文件&#xff0c…

Python通过Ctypes调用C++类,实测有效

文章目录 前言创建vs dll工程添加外部库编辑代码编译测试参考 前言 在软件开发中,有时候需要Python与C相结合,以充分发挥两者的优势 。Python作为一种高级编程语言,具有简洁易读的特点,适用于快速开发和原型设计。而C则是一种性能…

【运维笔记】VM 记录一次centos虚拟机和宿主机之间ping不通的问题

问题描述 环境:centos7,静态ipVM版本:VMware Workstation 16 pro,网络为nat映射模式问题: 一开始,虚拟机可以ping通宿主机,也可以ping通,也可以ping通外网(如 ping www.…

38 mars3d 对接地图图层 绘制点线面员

前言 这里主要是展示一下 mars3d 的一个基础的使用 主要是设计 接入地图服务器的 卫星地图, 普通的二维地图, 增加地区标记 基础绘制 点线面园 等等 测试用例 <template><div style"width: 1920px; height:1080px;"><div class"mars3dClas…

②零基础MySQL数据库-MySQL约束

作用 表在设计的时候加入约束的目的就是为了保证表中的记录完整性和有效性&#xff0c;比如用户表有些列的值&#xff08;手机号&#xff09;不能为空&#xff0c;有些列的值&#xff08;身份证号&#xff09;不能重复 分类 主键约束(primary key) PK 自增长约束(auto_increme…

string类的详细模拟实现

string类的模拟实现 文章目录 string类的模拟实现前言1. 类的框架设计2. 构造函数与析构函数3. 拷贝构造与重载赋值运算符函数4. 运算符重载5. 成员函数6. 迭代器的实现7. 非成员函数8. 单元测试总结 前言 ​ 在现代编程中&#xff0c;字符串处理是每个程序员都会遇到的基本任…

家用路由器和企业路由器的区别?

一、家用路由器 家用路由器路由器交换机 它只有一个WAN口和一个LAN口&#xff0c;WAN口接公网一个地址&#xff0c;LAN口接你电脑一个IP地址&#xff0c;完全符合路由器的设计&#xff0c;而因为家里如果用了&#xff0c;说明要接多个电脑&#xff0c;那么如果还需要对每个接口…

pandas的综合练习

事先说明&#xff1a; 由于每次都要导入库和处理中文乱码问题&#xff0c;我都是在最前面先写好&#xff0c;后面的代码就不在写了。要是copy到自己本地的话&#xff0c;就要把下面的代码也copy下。 # 准备工作import pandas as pd import numpy as np from matplotlib impor…