C#将数字转换为时间错误

时间:2014-06-24 04:17:16

标签: c# .net datetime

我正在从excel文件中读取时间,这是我将数字转换为时间的代码

    string time = "1350";
     DateTime dt = DateTime.ParseExact(time, "HHmm", CultureInfo.InvariantCulture);
    string timestring = dt.ToString("h:mm tt");
    Console.WriteLine(timestring);
    Console.Read();

问题是我的代码适用于4位数字,但有些数字就像600,900等,应转换为下午6:00和晚上9:00,但我的代码会抛出错误。有没有更好的方法来解决这个问题?

3 个答案:

答案 0 :(得分:3)

在转换为DateTime之前,只需用零填充它们。

string time = "600".PadLeft(4, '0');

答案 1 :(得分:2)

尝试以下解决方案 - 是的,我从excel

导入数据时尝试过此解决方案

Double dateVal = Convert.ToDouble(mydatetime);

日期? dt = DateTime.FromOADate(dateVal);

string timestring = dt.ToString(" h:mm tt");

答案 2 :(得分:2)

您正在调用ParseExact,这意味着文字必须与提供的format string完全匹配,否则您会收到错误消息。你正在使用的格式字符串:HHmm specifies一个24小时的时间,前一个时间早于中午。像“600”这样的字符串只有三个字符长,因此它与指定的四种字符格式(HHmm)不匹配。

听起来你不想要一个前导零,所以你可能想要“嗯”(12小时格式)或“嗯”(二十四小时格式),这样你就可以解析没有前导零的字符串。如果您使用嗯,则必须将下午6:00指定为1800.如果您使用嗯,您可能还需要使用tt格式字符串,以便区分600 am和600 pm