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

时间日期数据格式匹配报错:求指定时间字符串的正确格式

时间日期格式匹配问题解决方案

问题中的时间字符串'03-MAY-22 02.42.33.000000000 AM'与格式'%d-%b-%y %I.%M.%S.%f %p'不匹配的核心原因是:%f格式符仅支持匹配6位微秒,而目标字符串中秒后是9位纳秒,两者长度不兼容。

针对不同工具的解决方案如下:

Python 标准库处理

Python的datetime.strptime不直接支持9位纳秒解析,可通过两种方式处理:

  • 截断纳秒部分:将字符串的纳秒位截断为6位后,再用原格式解析:
    from datetime import datetime
    time_str = '03-MAY-22 02.42.33.000000000 AM'
    # 拆分字符串并截取6位纳秒,重组为符合%f要求的格式
    split_part = time_str.split('.')
    split_part[-1] = split_part[-1][:6] + ' ' + split_part[-1].split(' ')[-1]
    formatted_str = '.'.join(split_part)
    dt = datetime.strptime(formatted_str, '%d-%b-%y %I.%M.%S.%f %p')
    
  • 使用第三方库:借助dateutil.parser自动识别格式,无需手动指定格式字符串:
    from dateutil import parser
    dt = parser.parse('03-MAY-22 02.42.33.000000000 AM')
    

其他语言示例(以Java 8+为例)

Java的DateTimeFormatter支持9位纳秒匹配,使用格式字符串dd-MMM-yy hh.mm.ss.nnnnnnnnn a即可:

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class Main {
    public static void main(String[] args) {
        String timeStr = "03-MAY-22 02.42.33.000000000 AM";
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MMM-yy hh.mm.ss.nnnnnnnnn a");
        LocalDateTime dt = LocalDateTime.parse(timeStr, formatter);
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 20:10:27