我正在尝试从C#中的excel读取非常规时间格式,excel中的时间值为“29-Aug-01 11.23.00.000000000 PM”,而在excel中,单元格格式为“常规”而不是“时间”
现在我需要在excel中读取时间,然后在asp.net/c#中将时间分配到日历时间,我怎样才能让程序理解时间格式?
大thx!
我的代码不起作用
DateTime expTime = DateTime.ParseExact(strDate, "dd-MMM-yy hh.mm.ss.fffffffff tt", System.Globalization.CultureInfo.CurrentUICulture.DateTimeFormat);
答案 0 :(得分:1)
我有类似的解决方案,但更有意义。
string s = "29-Aug-01 11.23.00.000000000 AM";
DateTimeOffset myDate = DateTimeOffset.ParseExact(
s,
"dd-MMM-yy hh.mm.ss.fffffff00 tt",
System.Globalization.CultureInfo.InvariantCulture);
编辑: 你不能使用超过7'f'的字符。
答案 1 :(得分:0)
原始格式字符串失败,因为DateTime类型不能表示纳秒。以下格式字符串将起作用:
var expTime = DateTime.ParseExact(strDate, "dd-MMM-yy hh.mm.ss.fffffff00 tt",
CultureInfo.InvariantCulture);
这是有效的,因为00
字符被解释为文字并在解析过程中被忽略。
请注意,我正在传递CultureInfo.InvariantCulture
而不是系统的UI文化。这确保即使用户的UI Culture设置为其他语言,也将使用英语月缩写。否则,DateTime.ParseExact
将尝试使用用户的语言月缩写