簡體   English   中英

在IIS服務器7.5中,字符串未被識別為有效的DateTime

[英]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格式112 由於您的小時數是09 ,因此您應該使用0023 HH格式

m格式適用於此字符串,但可以為059 您可能需要使用0059 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM