You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中strptime解析时间后小时丢失的解决方法咨询

问题描述

我的train_time列表包含如下格式的时间字符串:

train_time = [
    "01/01/2021 00:00",
    "01/01/2021 01:00",
    "01/01/2021 02:00",
    "01/01/2021 03:00",
    "01/01/2021 04:00",
    "01/01/2021 05:00",
    "01/01/2021 06:00",
    "01/01/2021 07:00",
    "01/01/2021 08:00"
]

我用以下代码处理后:

# train_time = [dt.datetime.strptime(date, "%d/%m/%Y %H:%M").date() for date in train_time ]

输出的train_time只显示日期,小时信息丢失:

the output train_time
[datetime.date(2021, 1, 1),
 datetime.date(2021, 1, 1),
 datetime.date(2021, 1, 1),
 datetime.date(2021, 1, 1),
 datetime.date(2021, 1, 1),
 datetime.date(2021, 1, 1),
 datetime.date(2021, 1, 1),
 datetime.date(2021, 1, 1),
 datetime.date(2021, 1, 1),
 datetime.date(2021, 1, 1),
 datetime.date(2021, 1, 2),
 datetime.date(2021, 1, 2),
 datetime.date(2021, 1, 2),
]

请问如何保留实际小时信息,有哪些正确的格式处理方案?

解决方案

问题核心是你调用了.date()方法,这个方法会直接丢弃时间部分,只返回日期对象。想要保留小时信息,有以下几种可行方案:

方案1:保留完整datetime对象

直接去掉.date(),得到包含日期和时间的datetime.datetime对象:

import datetime as dt

train_time = [dt.datetime.strptime(date, "%d/%m/%Y %H:%M") for date in train_time]

处理后每个元素都是datetime.datetime类型,比如datetime.datetime(2021, 1, 1, 0, 0),小时、分钟信息会完整保留。

方案2:转换为自定义格式的时间字符串

如果需要将时间转为特定格式的字符串而非datetime对象,可以用.strftime()自定义输出格式:

import datetime as dt

# 保留原格式的字符串
train_time = [dt.datetime.strptime(date, "%d/%m/%Y %H:%M").strftime("%d/%m/%Y %H:%M") for date in train_time]

# 或者转为其他格式,比如"YYYY-MM-DD HH:MM"
train_time = [dt.datetime.strptime(date, "%d/%m/%Y %H:%M").strftime("%Y-%m-%d %H:%M") for date in train_time]

方案3:用pandas批量处理(适合大数据量)

如果数据量较大,使用pandas的to_datetime方法更高效,默认会保留完整时间信息:

import pandas as pd

train_time = pd.to_datetime(train_time, format="%d/%m/%Y %H:%M")
# 若要转为列表形式的datetime对象
train_time = train_time.to_list()

内容的提问来源于stack exchange,提问作者Naj_m_Om

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 12:25:13