zt:python下datetime类型的转换

本文介绍Python中datetime类型转换的方法,重点讲解如何使用strptime函数将字符串转换为datetime对象,并列出常用的格式化指令。

zt:python下datetime类型的转换

2010/8/4 12:37:18
print datetime.strptime("2010-04-01 00:04:57.277","%Y-%m-%d %H:%M:%S.%f")
参考文章:
http://docs.python.org/library/datetime.html#strftime-strptime-behavior
DirectiveMeaningNotes
%aLocale’s abbreviated weekday name. 
%ALocale’s full weekday name. 
%bLocale’s abbreviated month name. 
%BLocale’s full month name. 
%cLocale’s appropriate date and time representation. 
%dDay of the month as a decimal number [01,31]. 
%fMicrosecond as a decimal number [0,999999], zero-padded on the left(1)
%HHour (24-hour clock) as a decimal number [00,23]. 
%IHour (12-hour clock) as a decimal number [01,12]. 
%jDay of the year as a decimal number [001,366]. 
%mMonth as a decimal number [01,12]. 
%MMinute as a decimal number [00,59]. 
%pLocale’s equivalent of either AM or PM.(2)
%SSecond as a decimal number [00,61].(3)
%UWeek number of the year (Sunday as the first day of the week) as a decimal number [00,53]. All days in a new year preceding the first Sunday are considered to be in week 0.(4)
%wWeekday as a decimal number [0(Sunday),6]. 
%WWeek number of the year (Monday as the first day of the week) as a decimal number [00,53]. All days in a new year preceding the first Monday are considered to be in week 0.(4)
%xLocale’s appropriate date representation. 
%XLocale’s appropriate time representation. 
%yYear without century as a decimal number [00,99]. 
%YYear with century as a decimal number. 
%zUTC offset in the form +HHMM or -HHMM (empty string if the the object is naive).(5)
%ZTime zone name (empty string if the object is naive). 
%%A literal '%' character.
class RequirementPool(BaseModel): """ Product需求明细主模型:存储需求池的基本信息 """ id: Annotated[int | None, Field(description="主键(自动生成)")] = None project_no: Annotated[str | None, Field(alias="projectNo", max_length=20, description="项目编号")] = None req_name: Annotated[str | None, Field( alias="reqName", description="需求名称")] = None equip: Annotated[str | None, Field( max_length=100, description="产品名称")] = None req_sub_date: Annotated[datetime | None, Field( alias="reqSubDate", description="需求提交日期")] = None zt_id: Annotated[int, Field(alias="ztId", description="需求编号")] = None estimated_finish_date: Annotated[datetime | None, Field(alias="estimatedFinishDate", description="预估实现时间")] = None req_dev_leader: Annotated[str | None, Field(alias="reqDevLeader", max_length=100, description="开发负责人")] = None rd_req_datas: Annotated[List[RDReqData] | None, Field(alias="rdReqDatas", description="关联的 RDReqData 列表")] = None associated_version: Annotated[str | None, Field(alias="associatedVersion", max_length=255, description="关联版本号")] = None associated_version_id: Annotated[int | None, Field(alias="associatedVersionId", max_length=255, description="关联版本id")] = None release_date: Annotated[datetime | None, Field(alias="releaseDate",description="发布日期(未发布 或 具体日期)")] = None requirement_status: Annotated[str | None, Field(alias="requirementStatus", max_length=20, description="需求状态")] = None software_project: Annotated[str | None, Field(alias="softwareProject", max_length=1050, description="所属软件项目")] = None rd_req_id: Annotated[int | None, Field( alias="rdReqid", description="研发需求ID")] = None class Config: from_attributes = True extra = 'allow' 处理这个模型 时间字段要求是 北京时间
08-26
-- coding: utf-8 -- “”" @file: async_zt_flow_hcproblem @author: maxiaolong01 @date: 2025/7/17 10:14 “”" import datetime import pprint from tortoise import run_async from app.models.product import RequirementPool from app.settings import TORTOISE_ORM from app.utils.db import MySqlClient estimated_finish_date = datetime.date(1971, 1, 1) async def get_zt_materiallib(sql: str = ‘select * from zt_materiallib’): result = {} async with MySqlClient(TORTOISE_ORM) as client: for item in await client.execute_query(sql): release_date = item.get( “releaseDate”, datetime.date( 1971, 1, 1)) result["release_date"] = str(release_date) result["software_project"] = item.get("name", "未关联") print("release_date:", release_date, datetime.date( 1971, 1, 1)) if release_date == datetime.date( 1971, 1, 1): result["requirement_status"] = "超期未关闭" if datetime.date.today( ) > estimated_finish_date else "按期未关闭" print("requirement_status:", datetime.date.today(), estimated_finish_date, result["requirement_status"]) else: result["requirement_status"] = "按期关闭" if release_date < estimated_finish_date else "超期关闭" print("requirement_status:", release_date, estimated_finish_date, result["requirement_status"]) return result async def get_zt_build(sql: str = ‘select * from zt_build’): result = {} async with MySqlClient(TORTOISE_ORM) as client: for item in await client.execute_query(sql): associated_version = item.get(“name”, “未关联”) result[“associated_version”] = associated_version result[“associated_version_id”] = item.get(“id”, 0) sql = f""" SELECT m.releaseDate,p.name FROM zt_materiallib m LEFT JOIN zt_project p ON p.id = m.project WHERE m.topubbaseline = '{associated_version}' AND m.status = '1' LIMIT 1 """ d = await get_zt_materiallib(sql) if not d: d["release_date"] = str(datetime.date( 1971, 1, 1)) d["software_project"] = "未关联" d["requirement_status"] = "超期未关闭" if datetime.date.today( ) > estimated_finish_date else "按期未关闭" print("requirement_status:", datetime.date.today(), estimated_finish_date, d["requirement_status"]) result.update(d) return result async def get_zt_hctransform(sql: str = ‘select * from zt_hctransform where fromid = 1 and type = “hcrequirementtostory”’): result = [] async with MySqlClient(TORTOISE_ORM) as client: transformid = None for item in await client.execute_query(sql): transformid = item.get(“transformid”) sql = f"“” SELECT * FROM zt_build WHERE stories LIKE ‘%{transformid}%’ AND deleted = ‘0’ ORDER BY id DESC LIMIT 1 “”" build_data = await get_zt_build(sql) if not build_data: build_data.update({ “rd_req_id”: 0, “release_date: str(datetime.date( 1971, 1, 1)), “software_project”: “未关联”, “requirement_status”:“超期未关闭” if datetime.date.today( ) > estimated_finish_date else “按期未关闭” }) else: build_data.update({“rd_req_id”: transformid}) result.append(build_data) return result async def get_zt_flow_hcrequirement_item(sqlfile: str = ‘./app/tasks/sql/zt_flow_hcrequirement.sql’): result = [] global estimated_finish_date with open(sqlfile, ‘r’, encoding=‘utf-8’) as f: sql = f.read() async with MySqlClient(TORTOISE_ORM) as client: for item in await client.execute_query(sql): fromid = item.get(“zt_id”) sql = f’select * from zt_hctransform where fromid = {fromid} and type = “hcrequirementtostory”’ print(sql) estimated_finish_date = datetime.date.fromisoformat(item.get( “estimated_finish_date”, “1971-01-01”)) rd_req_data_list = await get_zt_hctransform(sql) data = {"" "zt_id": item.get("zt_id"), "project_no": item.get("project_no"), "equip": item.get("equip"), "req_name": item.get("req_name"), "req_sub_date": datetime.datetime.strptime(item.get("req_sub_date", "1971-01-01"), '%Y-%m-%d').strftime('%Y-%m-%d %H:%M:%S'), "estimated_finish_date": datetime.datetime.strptime(item.get("estimated_finish_date", "1971-01-01"), '%Y-%m-%d').strftime('%Y-%m-%d %H:%M:%S'), "req_dev_leader": item.get("req_dev_leader") } # pprint.pprint(item) # pool, _ = await RequirementPool.update_or_create(**data) rd_red_data = [] for i in rd_req_data_list: d = { "associated_version": i.get("associated_version", "未关联"), "associated_version_id": i.get("associated_version_id", 0), "rd_req_id": i.get("rd_req_id", None), "release_date": i.get("release_date", datetime.datetime.strptime("1971-01-01", '%Y-%m-%d').strftime('%Y-%m-%d %H:%M:%S')), "requirement_status": i.get("requirement_status", "未关闭"), "software_project": i.get("software_project", "未关联"), } data.update(d) print(data) rd_red_data.append(RequirementPool(**data)) if rd_red_data: print(rd_red_data) await RequirementPool.bulk_create(rd_red_data) # await RDReqData.bulk_create(rd_red_data) async def insert_product_requirement_pool(): await get_zt_flow_hcrequirement_item() if name == ‘main’: run_async(get_zt_flow_hcrequirement_item()) 再造成分批并发同步 展示优化后的全部代码
最新发布
09-05
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值