2011-10-30 97 views
1

我的web應用程序在asp vb.net編輯器中運行完美。但是當我通過IIS7運行我的web應用程序時,我得到這個錯誤。我在配置IIS7時缺少什麼?有沒有人可以提出建議?從字符串「31/03/2012」轉換爲鍵入「日期」無效

由於提前

+1

你從哪裏得到錯誤?什麼是堆棧跟蹤? – SLaks

+0

您是否試過'Convert.ToDateTime(「31/03/2012」)? – Ekk

+1

在2012年3月31日使用DateTime.Parse將導致以下錯誤「System.FormatException:String未被識別爲有效的DateTime。」。雖然翻轉了03和31。 –

回答

4

因爲你的IIS7配置爲英語語言和日期可能是意大利或類似的東西。你必須告訴Date.Parse使用哪種文化。

喜歡的東西

dateValue = Date.Parse(yourDate, CultureInfo.CreateSpecificCulture("it-IT")) 

或者你可以在你的IIS7改變文化

在這裏有是instructions

例如,如果你使用的UI

使用UI打開IIS管理器並導航到您想要的級別 管理即(omissis)

在功能視圖中,雙擊.NET全球化。

在.NET全球化頁面,在屬性表,單擊以選中 要編輯的全局設置,然後從 下拉列表中的值。

在「操作」窗格中,單擊「應用」。

或者你可以設置你的應用程序的文化在web.config

<system.web> 
    <globalization culture="it-IT" uiCulture="it-IT"/> 
</system.web> 
+1

區域設置可能設置爲美國(「 EN-US「)。日期格式因地區而異,與語言不盡相同。 –

+0

感謝xanatos,IIS7調整修復了我的代碼中的問題。 – Anvar

+0

我不能給這個答案足夠upvotes。我花了整整一個早上在我的機器語言環境設置上試圖弄清楚爲什麼這個代碼突然在日期格式上窒息。原來,即使我沒有改變代碼,我轉移到IIS託管。這不僅解決了我的問題,而且爲我提供了多種解決方法。 – Ian

4

如果您確定的日期始終處於正是格式,那麼你可以使用ParseExact代替:

var date = DateTime.ParseExact(
       "31/03/2012", 
       "dd/MM/yyyy", 
       System.Globalization.CultureInfo.InvariantCulture); 
1

您也可以使用CDate函數來解析日期。

Dim dDate As Date = CDate("31/03/2012") 

使用此功能在日期時間解析功能的好處是,你可以給它的日期字符串的任何可接受的格式,它會轉換。如果它不能解析日期,它會拋出一個錯誤。

+4

但缺點是,您可能會在不明確的日期獲得不可預知的結果,例如「03/05/2011」 –

相關問題