2016-11-30 7:15:00(標準 ISO 格式)11/30/2016 7:15:00 AM(跟隨系統區域設置)在後台綁定數據時,顯式調用 ToString("yyyy-MM-dd HH:mm:ss") 格式化,而非依賴預設的 ToString()。
// 假設從數據庫讀取的 DateTime 對象
DateTime dbTime = GetDateTimeFromDB(); // 2016-11-30 07:15:00
// 錯誤做法:依賴系統文化
txtBox.Text = dbTime.ToString(); // 輸出 11/30/2016 7:15:00 AM
// 正確做法:指定固定格式
txtBox.Text = dbTime.ToString("yyyy-MM-dd HH:mm:ss"); // 輸出 2016-11-30 07:15:00
public static class DateTimeExtensions {
public const string StandardFormat = "yyyy-MM-dd HH:mm:ss";
public static string ToStandardString(this DateTime dt) => dt.ToString(StandardFormat);
}
// 使用
txtBox.Text = dbTime.ToStandardString();
// 在 Program.cs 或 Global.asax 中
var culture = new CultureInfo("zh-CN") {
DateTimeFormat = { ShortDatePattern = "yyyy-MM-dd", LongTimePattern = "HH:mm:ss" }
};
CultureInfo.DefaultThreadCurrentCulture = culture;
CultureInfo.DefaultThreadCurrentUICulture = culture;
⚠️ 影響全程序,可能導致其他預期跟隨系統的控件異常,建議優先使用顯式格式化。
Binding.Format += (s, e) => e.Value = ((DateTime)e.Value).ToStandardString();StringFormat 屬性:<TextBlock Text="{Binding Date, StringFormat=yyyy-MM-dd HH:mm:ss}" />@Model.Date.ToString("yyyy-MM-dd HH:mm:ss")| 符號 | 含義 | 示例 |
|---|---|---|
| yyyy | 4位年份 | 2016 |
| MM | 2位月份 | 11 |
| dd | 2位日期 | 30 |
| HH | 24小時制 | 07 |
| mm | 分鐘 | 15 |
| ss | 秒 | 00 |
牢記:顯式格式化勝過隱式依賴,才能在任何系統區域設置下保證顯示一致性。