C#将数字转换为时间误差
我从excel文件中读取时间,这是我将数字转换为时间的代码C#将数字转换为时间误差,c#,.net,datetime,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(); 问题是,我的
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 PM和9:00 PM,但我的代码抛出了一个错误。有更好的方法解决这个问题吗?在转换为
DateTime
之前,只需用零填充即可
string time = "600".PadLeft(4, '0');
尝试以下解决方案-是的,我在从excel导入数据时尝试过此解决方案 Double dateVal=Convert.ToDouble(mydatetime) 约会?dt=DateTime.FromOADate(dateVal) 字符串时间字符串=dt.ToString(“h:mm tt”) 您正在调用,这意味着文本必须与所提供的文本完全匹配,否则会出现错误。您正在使用的格式字符串:HHmm 24小时时间,前导零表示早于中午的时间。像“600”这样的字符串只有三个字符长,因此与指定的四字符格式(HHmm)不匹配
听起来你不想要前导零,所以你可能想要“hmm”(12小时格式)或“hmm”(24小时格式),这样你就可以解析没有前导零的字符串。如果使用Hmm,则必须将下午6:00指定为1800。如果您使用hmm,您可能还需要使用tt格式字符串,以便区分上午600点和下午600点尝试在诸如0600、0900等数字之前添加0。为什么600是下午6点?不是早上6点吗?如果不是,那么你希望早上6点用你的格式怎么表达呢?更重要的是,现在是早上6点而不是下午6点-你说的“来自excel文件”到底是什么意思。您正在读取XLS或XLSX文件吗?还是CSV?还是别的什么?从Excel读取日期和时间时,通常使用OADates。另请参见:获取此错误与“string.ToString(System.IFormatProvider)”的最佳重载方法匹配的方法有一些无效参数。尽管您的答案提供了解决方案,但这将显示时间为上午6:00。是否可以将其显示为PM,或者我们需要输入“1800”来实现它。不是我的答案写的是早上6点。我的答案是将600改为0600。是的,当然你应该输入1800来获得下午时间。1)什么是“尝试”(而不是Ty)?你自己检查过了吗?2) 为什么不进行编辑和格式化?3) 这比我之前的回答好多少?OP没有提供足够的细节,但是是的-加载日期通常是从Excel中获取日期的方式。“嗯”和“嗯”仍然需要解析4位数字。