ASP.NET 頁面輸出日期時間多出「上午/下午」中文字樣(如 2024/1/1 上午 10:00:00),導致 DateTime.Parse、資料庫寫入、JSON 序列化失敗。
IIS 工作進程繼承的系統區域設定包含「上午/下午」標記,而預設日期時間格式不符合 yyyy-MM-dd HH:mm:ss 標準格式。
HH:mm:ss(24 小制,無 AM/PM)。yyyy-M-d 或 yyyy-MM-dd。iisreset) 生效。regedit,定位:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\OLEAUTOLEAUT 金鑰,右鍵 Microsoft → 新增 → 金鑰 → 命名 OLEAUT)。VarConversionLocaleSetting2(十六進位或十進位皆可)。iisreset)或重開機。| 值 | 行為 |
|---|---|
| 0 | 預設,使用目前使用者區域設定 |
| 1 | 使用 .DEFAULT 使用者區域設定 |
| 2 | 強制使用系統預設區域設定(忽略使用者自訂),解決 AM/PM 問題 |
<%@ Page Language="C#" %>
<%
DateTime now = DateTime.Now;
string s = now.ToString("yyyy-MM-dd HH:mm:ss");
Response.Write("伺服器時間:" + s);
if (now.ToString() != s) Response.Write(" (格式不規範)");
%>
部署此 .aspx 頁面,輸出若無紅字即格式正確。
CultureInfo.InvariantCulture 或特定 CultureInfo 進行格式化/解析,而非依賴系統預設。OLEAUT 金鑰,手動建立即可。