[英]String was not recognized as a valid DateTime in IIS server 7.5
我看过一些有关“字符串未被识别为有效的DateTime”但无法得到答案的问题。 这是我的问题。 我有代码
DateTime.ParseExact(dr[3].ToString(), "dd-MM-yyyy tt h:m:s", System.Globalization.CultureInfo.InvariantCulture.DateTimeFormat).ToString("MMM. dd yyyy hh:mm tt")
它在localhost中可以正常工作,但在IIS服务器中有问题。 例如。 我的Sql Server 2008 R2中的日期为“ 2014-03-05 09:10:17.040”,我们将不胜感激。
您的自定义格式错误。 如果使用DateTime.ParseExact
方法,则格式和字符串应完全匹配。
使用指定的格式和特定于区域性的格式信息,将日期和时间的指定字符串表示形式转换为其等效的DateTime。 字符串表示形式的格式必须与指定的格式完全匹配。
由于您的字符串以Year开头,因此您需要首先使用yyyy
格式。 我假设您的03
是月份,而05
是一天。 h
格式为1
到12
。 由于您的小时数是09
,因此您应该使用00
到23
HH
格式 。
m
格式适用于此字符串,但可以为0
到59
。 您可能需要使用00
到59
mm
格式 。 第二部分情况相同。
另外,您还需要fff
格式的毫秒部分。
因此,您应该改用yyyy-MM-dd HH:mm:ss.fff
格式。
例如;
string s = "2014-03-05 09:10:17.040";
var date = DateTime.ParseExact(s,
"yyyy-MM-dd HH:mm:ss.fff",
CultureInfo.InvariantCulture);
Console.WriteLine(date);
输出将是;
3/5/2014 9:10:17 AM
这里有demonstration
。
解析字符串后,您可以使用DateTime.ToString()
方法设置所需的格式,例如;
date.ToString("MMM. dd yyyy hh:mm tt");
在asp.net中调试时,我获得了格式为dr的17-03-2014 PM 2:53:04
但这与您在问题中写的示例日期格式不同! 无论如何,对于这种情况,您可以使用dd-MM-yyyy tt h:mm:ss
格式。
例如;
var date = DateTime.ParseExact("17-03-2014 PM 2:53:04",
"dd-MM-yyyy tt h:mm:ss",
CultureInfo.InvariantCulture);
Console.WriteLine(date);
不幸的是,看来您的日期在数据库中彼此之间没有标准日期格式。 在这种情况下,不可能将它们全部解析为一种格式。
只有您可以使用DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles)
重载 ,您可以在字符串数组中为字符串使用多种格式。
您正在使用ParseExact,它仅在您解析的格式与字符串的格式匹配时才起作用。
在您的代码中,您期望"dd-MM-yyyy tt h:m:s"
在您提供的示例中(“ 2014-03-05 09:10:17.040”),它位于
yyyy-MM-dd HH:mm:ss
尝试将其更改为DateTime.Parse()
并让其确定格式本身。
尝试这个:
DateTime.ParseExact(dr[3].ToString(), "yyyy-MM-dd hh:mm:ss.fff",
System.Globalization.CultureInfo.InvariantCulture.DateTimeFormat).
ToString("MMM.dd yyyy hh:mm tt")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.