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

C#中含毫秒的时间字符串转DateTime解决方案求助

带毫秒的时间字符串转DateTime解决方案

嘿,我来帮你搞定这个问题!针对不同的编程语言,我整理了几种靠谱的转换方案,你可以按需选用:

C# 实现

在C#里,你需要用ParseExact或者更安全的TryParseExact方法,指定包含毫秒的格式字符串"HH:mm:ss.fff"(其中fff对应三位毫秒):

using System;
using System.Globalization;

class Program
{
    static void Main()
    {
        string timeStr = "12:05:45.458";
        DateTime parsedTime;

        // 安全解析,避免格式错误抛出异常
        if (DateTime.TryParseExact(timeStr, "HH:mm:ss.fff", CultureInfo.InvariantCulture, DateTimeStyles.None, out parsedTime))
        {
            Console.WriteLine($"解析成功:{parsedTime.ToString("HH:mm:ss.fff")}");
        }
        else
        {
            Console.WriteLine("时间格式不符合要求,请检查输入");
        }
    }
}

Python 实现

Python中可以用datetime.strptime方法,格式符%f用来匹配微秒(虽然是六位,但输入三位毫秒时会自动补零,不影响结果):

from datetime import datetime

time_str = "12:05:45.458"
try:
    parsed_time = datetime.strptime(time_str, "%H:%M:%S.%f")
    print(f"解析成功:{parsed_time.strftime('%H:%M:%S.%f')[:-3]}")  # 只保留三位毫秒输出
except ValueError as e:
    print(f"解析失败:{e}")

Java 实现

Java 8及以上推荐使用DateTimeFormatter(线程安全),格式符SSS对应三位毫秒;旧版本可以用SimpleDateFormat:

import java.time.LocalTime;
import java.time.format.DateTimeFormatter;

public class TimeParser {
    public static void main(String[] args) {
        String timeStr = "12:05:45.458";
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss.SSS");
        
        try {
            LocalTime parsedTime = LocalTime.parse(timeStr, formatter);
            System.out.println("解析成功:" + parsedTime.format(formatter));
        } catch (Exception e) {
            System.out.println("解析失败:时间格式不正确");
        }
    }
}

关键注意点

核心是要指定正确的格式符来匹配毫秒部分:

  • C#:fff(三位毫秒)
  • Python:%f(匹配微秒,兼容三位毫秒输入)
  • Java:SSS(三位毫秒)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 07:04:30