簡體   English   中英

部署到虛擬機時,DateTime不接受格式或區域性

[英]DateTime doesn't accept format or culture when deployed to a virtual machine

我正在從ASP.NET(vb.net)應用程序將格式化為DateTime的字符串導出到SQL Server記錄。 這在我的開發機器上效果很好。 我可以使用任何格式並在web.config或<%@ Page%>聲明中更改區域性。

如果我將應用程序部署到生產服務器,則這些設置將被忽略。 日期時間將始終以“ May 7 2014 7:31 PM”格式生成。 沒有文化設置,並且沒有toString格式顯示任何效果。

我對確切的格式不是很困惑,但是我需要獲取DateTime字符串中的秒數。 在生產服務器上這似乎是不可能的。

編輯:

沒有太多要顯示的代碼。 以下行在開發機器上運行正常:

DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss.fff")

關鍵是,沒有格式應用於生產服務器。

更改區域性(在生產服務器上)也沒有任何效果。

編輯:

在頁面聲明中,我使用:

<%@ Page Language="vb" Culture="es-MX" UICulture="es" ...

在配置中,我使用:

<system.web>
<globalization culture="es-MX" uiCulture="es"/>

與其依賴配置,不如考慮更改代碼以傳遞特定的文化。

例如:

yourDateTime.ToString("yyyy/MM/dd hh:mm:ss.fff", CultureInfo.InvariantCulture)

要么

yourDateTime.ToString("yyyy/MM/dd hh:mm:ss.fff", New CultureInfo("en-GB"))

更新

根據您在下面的評論,我可以提供以下建議:

  • 文化與這種情況無關。 SQL Server不會將日期存儲為字符串,而是以datetimedatetime2datetimeoffset類的類型存儲它們。 這些類型沒有特定於文化的屬性。

  • 使用SQL參數時,絕對不要將日期作為字符串傳遞。 將它們作為DateTimeDateTimeOffset類型傳遞。

  • 您可能根本不需要傳遞它,因為您可以在SQL中使用GETDATE()GETUTCDATE()

  • 認為您的意思是,當您在另一個工具(例如SQL Server Management Studio)中查看值時,會看到具有特定格式的字符串中的輸出。 該格式與實際存儲的內容無關,僅與顯示方式無關。 SQL具有用於控制它的自己的設置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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