所有規格字元區分大小寫,可任意組合構成自訂格式字串。下表列出各規格字元意義與輸出範例 (假設 DateTime dt = new DateTime(2024, 3, 15, 14, 30, 45, 123))。
| 規格 | 說明 | 範例輸出 |
|---|---|---|
| d | 日,無前導零 | 15 |
| dd | 日,兩位數前導零 | 15 |
| ddd | 星期縮寫 (取決於 Culture) | 五 |
| dddd | 星期全名 | 星期五 |
| M | 月,無前導零 | 3 |
| MM | 月,兩位數前導零 | 03 |
| MMM | 月份縮寫 | 三月 |
| MMMM | 月份全名 | 三月 |
| y | 年 (無紀元),無前導零 | 24 |
| yy | 年 (無紀元),兩位數 | 24 |
| yyyy | 年 (含紀元),四位數 | 2024 |
| gg | 紀元/時代 (如西元) | 西元 |
| h | 12 小時制,無前導零 | 2 |
| hh | 12 小時制,兩位數 | 02 |
| H | 24 小時制,無前導零 | 14 |
| HH | 24 小時制,兩位數 | 14 |
| m | 分,無前導零 | 30 |
| mm | 分,兩位數 | 30 |
| s | 秒,無前導零 | 45 |
| ss | 秒,兩位數 | 45 |
| f | 秒小數 1 位 (截斷) | 1 |
| ff | 秒小數 2 位 | 12 |
| fff | 秒小數 3 位 (毫秒) | 123 |
| ffff | 秒小數 4 位 | 1230 |
| fffff | 秒小數 5 位 | 12300 |
| ffffff | 秒小數 6 位 (微秒) | 123000 |
| fffffff | 秒小數 7 位 (100 奈秒) | 1230000 |
| t | AM/PM 首字母 | 下 |
| tt | AM/PM 完整 | 下午 |
| z | 時區偏移小時 (無前導零) | +8 |
| zz | 時區偏移小時 (兩位數) | +08 |
| zzz | 時區偏移完整 (+hh:mm) | +08:00 |
| : | 時間分隔符 (依 Culture) | : |
| / | 日期分隔符 (依 Culture) | / |
| '...' | 字面字串 (單引號包裹) | 'Year: ' → Year: |
| \c | 跳脫單一字元 | \: → : |
var dt = DateTime.Now;
dt.ToString("yyyy-MM-dd") // 2024-03-15
dt.ToString("yyyy/MM/dd HH:mm:ss") // 2024/03/15 14:30:45
dt.ToString("yyyy年M月d日 dddd") // 2024年3月15日 星期五
dt.ToString("HH:mm:ss.fff") // 14:30:45.123
dt.ToString("yyyy-MM-ddTHH:mm:ss.fffzzz") // 2024-03-15T14:30:45.123+08:00 (ISO 8601)
dt.ToString("yyyyMMddHHmmss") // 20240315143045 (檔名安全)
dt.ToString("tt hh:mm") // 下午 02:30
using System.Globalization;
dt.ToString("yyyy年MM月dd日", new CultureInfo("zh-TW")) // 繁體中文
dt.ToString("MMMM dd, yyyy", new CultureInfo("en-US")) // March 15, 2024
dt.ToString("d", CultureInfo.InvariantCulture) // 03/15/2024 (固定格式)
| 規格 | 名稱 | 範例 (en-US) |
|---|---|---|
| d | ShortDate | 3/15/2024 |
| D | LongDate | Friday, March 15, 2024 |
| t | ShortTime | 2:30 PM |
| T | LongTime | 2:30:45 PM |
| f | FullDateTime | Friday, March 15, 2024 2:30 PM |
| F | FullDateTimeLong | Friday, March 15, 2024 2:30:45 PM |
| g | General | 3/15/2024 2:30 PM |
| G | GeneralLong | 3/15/2024 2:30:45 PM |
| o / O | RoundTrip (ISO 8601) | 2024-03-15T14:30:45.1230000+08:00 |
| r / R | RFC1123 | Fri, 15 Mar 2024 06:30:45 GMT |
| s | Sortable | 2024-03-15T14:30:45 |
| u | UniversalSortable | 2024-03-15 14:30:45Z |
使用方式:dt.ToString("o") 或 dt.ToString("O")。
string input = "2024年03月15日";
DateTime dt = DateTime.ParseExact(input, "yyyy年MM月dd日", CultureInfo.GetCultureInfo("zh-TW"));
// 多格式嘗試
string[] formats = { "yyyy-MM-dd", "yyyy/MM/dd", "yyyy年M月d日" };
bool ok = DateTime.TryParseExact(input, formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out dt);
原文連結:https://www.bianceng.cn/Programming/csharp/201410/45591.htm
MSDN 官方文件:Custom date and time format strings