从C#中的excel读取非常规时间格式

时间:2014-02-21 15:06:35

标签: c# asp.net excel

我正在尝试从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);

2 个答案:

答案 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将尝试使用用户的语言月缩写

来解析日期字符串