我正在从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,但我的代码会抛出错误。有没有更好的方法来解决这个问题?
答案 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