在IIS服务器7.5中,字符串未被识别为有效的DateTime

时间:2014-03-16 14:40:41

标签: c# asp.net sql datetime iis

我已经看过一些关于&#34的问题;字符串未被识别为有效的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" 任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

您的自定义格式错误。如果您使用DateTime.ParseExact方法,则您的格式和字符串应完全匹配。

  

将指定的日期和时间字符串表示形式转换为它   DateTime等效使用指定的格式和特定​​于文化   格式信息。 字符串表示的格式必须匹配   完全符合指定的格式。

由于您的字符串以年份开头,因此您需要先使用yyyy格式。我假设您的03是月,05是一天。 h format适用于112。由于您的小时为09,因此您应使用0023的{​​{3}}。

HH format可以使用此字符串,但059。您可能需要使用0059的{​​{3}}。你的第二部分也是如此。

你的毫秒部分也需要m format

因此,您应该使用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

这里有 mm format

解析字符串后,您可以使用fff format方法格式化您想要的格式;

date.ToString("MMM. dd yyyy hh:mm tt");
  

在asp.net中进行调试时,我的格式为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);

不幸的是,您的日期在数据库中看起来没有标准日期格式。在这种情况下,不可能以一种格式解析它们。

只有您可以使用demonstration,您可以在字符串数组中为字符串使用多种格式。

答案 1 :(得分:0)

你正在使用ParseExact,只有当你解析的格式与字符串的格式匹配时才会起作用。

在您的代码中,您期待"dd-MM-yyyy tt h:m:s"

在您给出的示例(“2014-03-05 09:10:17.040”)中,它位于

yyyy-MM-dd HH:mm:ss

尝试将其更改为DateTime.Parse()并让它自行确定格式。

答案 2 :(得分:0)

试试这个:

DateTime.ParseExact(dr[3].ToString(), "yyyy-MM-dd hh:mm:ss.fff", 
  System.Globalization.CultureInfo.InvariantCulture.DateTimeFormat).
  ToString("MMM.dd yyyy hh:mm tt")