問題是這樣的:
DateTime.Now不經過ToString()轉換,網站部署到測試服務器(國內)得到的時間格式是:2018/8/17 16:26:09,而部署到國外服務器得到的時間格式是:17/8/2018 4:43:15 PM,由於國外服務器得到的時間格式后面帶有AM、PM,導致SQL執行錯誤,插入或修改記錄失敗。網上搜索了很多都沒有找到解決方法,問題困擾了好幾天,后來終於搜到一個方法,終於問題解決了,現特地把解決的參考方法記錄下,希望對遇到類似問題的朋友有所幫助。
我的解決方法:
1、修改注冊表的時間格式:運行-regedit-/HKEY_USERS/.DEFAULT/Control Panel/International,然后:
(1)在右邊的sShortDate右鍵,修改為數值數據為yyyy/M/d(原來是m/M/yyyy)
(2)原來sShortTime原來是h:mm tt,修改為H:mm
(3)修改sTimeFormat為H:mm:ss,原來可能是h:mm:ss tt。
時間帶有AM、PM的原因就是因為時間格式有tt。
2、重啟IIS
處理方法參考CSDN博友queenpong的原文:https://blog.csdn.net/queenpong/article/details/79399730
公司的項目,部分電腦發布到IIS之后,凡是往后台數據庫傳入時間(不經過ToString()轉換)都是帶有星期的,造成SQL執行錯誤,項目中大部分是這樣使用的,不想通過修改程序去處理經查網上的修改方式都不起作用,解決方法如下:
一、修改控制面板區域和語言控制
在“控制面板”,在“區域和語言選項”中找到了“格式”設置,然后把短日期改成yyyy-M-D。
經測試無效。
二、修改注冊表
/HKEY_USERS/.DEFAULT/Control Panel/International 修改右側sDate值為 - (可改可不改) 修改右側sShortDate值為 yyyy-M-d (就是刪掉后面的 dddd) 最后重啟IIS。
經測試無效。
三、修改所有注冊表
方法同二,只不過需要查詢注冊表中所有sShortDate,將默認格式為yyyy/M/d dddd,修改為yyyy-MM-dd ,修改后不要忘記重啟IIS,測試通過