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
相关产品推荐
相关产品推荐

