[英]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不會將日期存儲為字符串,而是以datetime
或datetime2
或datetimeoffset
類的類型存儲它們。 這些類型沒有特定於文化的屬性。
使用SQL參數時,絕對不要將日期作為字符串傳遞。 將它們作為DateTime
或DateTimeOffset
類型傳遞。
您可能根本不需要傳遞它,因為您可以在SQL中使用GETDATE()
或GETUTCDATE()
。
我認為您的意思是,當您在另一個工具(例如SQL Server Management Studio)中查看值時,會看到具有特定格式的字符串中的輸出。 該格式與實際存儲的內容無關,僅與顯示方式無關。 SQL具有用於控制它的自己的設置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.