龙空技术网

软件测试|Pydantic处理时间类型数据

测试者穆勒 131

前言:

眼前看官们对“计算两个日期的时间差公式是什么”大约比较看重,姐妹们都想要学习一些“计算两个日期的时间差公式是什么”的相关内容。那么小编也在网摘上收集了一些对于“计算两个日期的时间差公式是什么””的相关内容,希望你们能喜欢,各位老铁们一起来了解一下吧!

简介

我们之前介绍过使用pydantic验证数据,比如校验数据的格式等,但是在我们的日常工作中,还有一种数据是需要我们验证的,比如时间数据,时间数据不同于字符串,列表等数据,与他们的验证不一样,本文就来为大家介绍一下pydantic如何验证时间数据。

datetime时间类型处理

首先,datetime有以下不同的数据:

datetime, 现有datetime对象int或float,假定为 Unix 时间,即自 1970 年 1 月 1 日以来的秒数(if >= -2e10 or <= 2e10))或毫秒 (if < -2e10or > 2e10)str, 则类似:YYYY-MM-DD[T]HH:MM[:SS[.ffffff]][Z or [±]HH[:]MM]]]int或float作为字符串(假定为 Unix 时间)

处理datetime数据,代码如下:

from datetime import datetimefrom pydantic import BaseModel, validatorclass Book(BaseModel):    id: int    name: str    create_time: datetime = None    @validator('create_time', pre=True, always=True)    def set_create_now(cls, v):        return v or datetime.now()#  1.传datetime 对象book1 = Book(id=1, name='muller', create_time=datetime.now())print(book1.json())# 2.传字符串book2 = Book(id=2, name='theshy', create_time="2023-10-24T12:00:10.707257")print(book2.json())# 3.Unix 时间戳book2 = Book(id=3, name='langx', create_time=1645506606260)print(book2.json())-----------输出结果如下:{"id": 1, "name": "muller", "create_time": "2023-10-25T14:36:27.550312"}{"id": 2, "name": "theshy", "create_time": "2023-10-24T12:00:10.707257"}{"id": 3, "name": "langx", "create_time": "2022-02-22T05:10:06.260000+00:00"}
date 日期类型

date日期数据类型可能是以下类型:

date, 现有date对象int或float,见datetime Unix 时间str, 有效格式:YYYY-MM-DD int或float

处理date日期数据类型,代码如下:

from datetime import datetime, datefrom pydantic import BaseModel, validatorclass Book(BaseModel):    id: int    name: str    create_time: date = None    @validator('create_time', pre=True, always=True)    def set_create_now(cls, v):        return v or date.today()#  1.传date 对象book1 = Book(id=1, name='python', create_time=date.today())print(book1.json())# 2.传字符串book2 = Book(id=2, name='python', create_time="2023-10-01")print(book2.json())# 3.Unix 时间戳book2 = Book(id=3, name='python', create_time=1645506606260)print(book2.json())-----------------输出结果如下:{"id": 1, "name": "python", "create_time": "2023-10-25"}{"id": 2, "name": "python", "create_time": "2023-10-01"}{"id": 3, "name": "python", "create_time": "2022-02-22"}
time时间点处理

time字段可以是:

time, 现有time对象str, 以下格式有效:HH:MM[:SS[.ffffff]][Z or [±]HH[:]MM]]]

要对time进行处理,代码如下:

from datetime import datetime, date, time, timedeltafrom pydantic import BaseModel, validatorclass Book(BaseModel):    id: int    name: str    create_time: time#  1.传time 对象book1 = Book(id=1, name='theshy', create_time=time(15, 26, 16))print(book1.json())# 2.传字符串book2 = Book(id=2, name='rookie', create_time="15:26:16")print(book2.json())------------输出结果如下:{"id": 1, "name": "theshy", "create_time": "15:26:16"}{"id": 2, "name": "rookie", "create_time": "15:26:16"}
timedelta时间差

timedelta对象表示的是两个时间点的时间差,两个datedatetime对象相减就可以返回一个timedelta对象。timedelta字段可以是:

timedelta, 现有timedelta对象intfloat, 假定为秒str, 以下格式有效:[-][DD ][HH:MM]SS[.ffffff] 和 [±]P[DD]DT[HH]H[MM]M[SS]S

要对时间差数据进行处理,代码如下:

from datetime import date, datetime, time, timedeltafrom pydantic import BaseModelclass Model(BaseModel):    d: date = None    dt: datetime = None    t: time = None    td: timedelta = Nonem = Model(    d=1966280412345.6789,    dt='2032-04-23T10:20:30.400+02:30',    t=time(4, 8, 16),    td='P3DT12H30M5S',)print(m.dict())--------------输出结果如下:{'d': datetime.date(2032, 4, 22), 'dt': datetime.datetime(2032, 4, 23, 10, 20, 30, 400000, tzinfo=datetime.timezone(datetime.timedelta(seconds=9000))), 't': datetime.time(4, 8, 16), 'td': datetime.timedelta(days=3, seconds=45005)}
总结

本文主要介绍了pydantic对于时间数据的处理,不只是datetime数据,还有日期,时间点,时间差等数据的验证处理,希望本文对大家有所帮助。

霍格沃兹测试开发学社|免费学习资料大放送,助你事半功倍! - 公众号 - 测试人社区

标签: #计算两个日期的时间差公式是什么