gpt4 book ai didi

c# - 将 AM/PM 时间字符串解析为 TimeSpan

转载 作者:太空宇宙 更新时间:2023-11-03 18:55:45 24 4
gpt4 key购买 nike

我使用以下方法将时间字符串解析为 TimeSpan:

string[] formats = { "hhmm", "hmm", @"hh\:mm", @"h\:mm\:ss", @"h\:mm", "hh:mm tt" };

parseSuccess = TimeSpan.TryParseExact(value, formats, CultureInfo.CurrentCulture, TimeSpanStyles.None, out dtValue);

当我尝试解析像上午 9:00、下午 5:00 这样的值时,它会返回 false。这里有什么问题?

最佳答案

tt 不作为 custom TimeSpan format strings 的格式说明符之一存在.这是有道理的,因为 TimeSpan 实际上是一个持续时间,而不是一天中的时间值 - 不幸的是 DateTime.TimeOfDay 确实是 返回一个 TimeSpan

将值解析为 DateTime 然后从中获取时间可能是最简单的:

string text = "5:00 PM";
string[] formats = { "hhmm", "hmm", @"hh\:mm", @"h\:mm\:ss", @"h:mm", @"h:mm tt" };

var success = DateTime.TryParseExact(text, formats, CultureInfo.CurrentCulture,
DateTimeStyles.None, out var value);
Console.WriteLine(value.TimeOfDay);

请注意,我已将 hh:mm tt 更正为 h:mm tt,因为您的示例数据未用 0 填充。您很可能想要 HHmmHH:mm 而不是 hhmmhh:mm 来接受像“21:00”这样的值。

或者,使用我的 Noda Time具有特定时间类型的库 (LocalTime),可以使用 LocalTimePattern 直接解析 :)

关于c# - 将 AM/PM 时间字符串解析为 TimeSpan,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45938786/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com