标准日期和时间格式字符串
日期和时间格式字符串定义由格式设置操作生成的DateTime 值的文本表示形式。 它还可定义分析操作中需要的日期和时间值的表示形式,以便成功将字符串转换为日期和时间。 自定义格式字符串由一个或多个自定义日期和时间格式说明符组成。 任何不是标准日期和时间格式字符串都会解释为自定义日期和时间格式字符串。
格式说明符 | 说明 | C#示例 摘自微软官方文档 |
---|---|---|
"d" | 短日期模式。 | 2009-06-15T13:45:30 -> 6/15/2009 |
“D” | 长日期模式。 | 2009-06-15T13:45:30 -> Monday, June 15, 2009 |
“f” | 完整日期/时间模式(短时间) | 2009-06-15T13:45:30 -> Monday, June 15, 2009 1:45 PM |
“F” | 完整日期/时间模式(长时间) | 2009-06-15T13:45:30 -> Monday, June 15, 2009 1:45:30 PM |
“g” | 常规日期/时间模式(短时间) | 2009-06-15T13:45:30 -> 6/15/2009 1:45 PM |
“G” | 常规日期/时间模式(长时间) | 2009-06-15T13:45:30 -> 6/15/2009 1:45:30 PM |
“s” | 可排序日期/时间模式 | 2009-06-15T13:45:30-> 2009-06-15T13:45:30 |
“t” | 短时间模式 | 2009-06-15T13:45:30 -> 1:45 PM |
“T” | 长时间模式 | 2009-06-15T13:45:30 -> 1:45:30 PM |
“u” | 通用可排序日期/时间模式 | 2009-06-15T13:45:30 -> 2009-06-15 13:45:30Z |
“U” | 通用完整日期/时间模式 | 2009-06-15T13:45:30 -> Monday, June 15, 2009 8:45:30 PM |
“y” | 年月模式 | 2009-06-15T13:45:30 -> June 2009 |
标准格式字符串的工作原理
在格式设置操作中,标准格式字符串只是自定义格式字符串的别名。 使用别名引用自定义格式字符串的优点是:尽管别名保持固定不变,自定义格式字符串自身也可以变化。 这很重要,因为日期和时间值的字符串表示形式通常会因区域性而异。 例如,“d”标准格式字符串指示应使用短日期模式显示日期和时间值。 对于固定区域性,此模式为“MM/dd/yyyy”。
自定义日期和时间格式字符串
格式说明符 | 说明 | C#示例 摘自微软官方文档 |
---|---|---|
"d" | 一个月中的某一天(1 到 31) | 2009-06-01T13:45:30 -> 1 2009-06-15T13:45:30 -> 15 |
“dd” | 一个月中的某一天(01 到 31) | 2009-06-01T13:45:30 -> 01 2009-06-15T13:45:30 -> 15 |
“ddd” | 一周中某天的缩写名称 | 2009-06-15T13:45:30 -> Mon |
“dddd” | 一周中某天的完整名称 | 2009-06-15T13:45:30 -> Monday |
“f” | 日期和时间值的十分之几秒 | 2009-06-15T13:45:30.6170000 -> 6 2009-06-15T13:45:30.05 -> 0 |
“ff” | 日期和时间值的百分之几秒 | 2009-06-15T13:45:30.6170000 -> 61 2009-06-15T13:45:30.0050000 -> 00 |
“fff” | 日期和时间值的千分之几秒 | 6/15/2009 13:45:30.617 -> 617 6/15/2009 13:45:30.0005 -> 000 |
“ffff” | 日期和时间值的万分之几秒 | 2009-06-15T13:45:30.6175000 -> 6175 2009-06-15T13:45:30.0000500 -> 0000 |
“fffff” | 日期和时间值的十万分之几秒 | 2009-06-15T13:45:30.6175400 -> 61754 6/15/2009 13:45:30.000005 -> 00000 |
“ffffff” | 日期和时间值的百万分之几秒 | 2009-06-15T13:45:30.6175420 -> 617542 2009-06-15T13:45:30.0000005 -> 000000 |
“fffffff” | 日期和时间值的千万分之几秒 | 2009-06-15T13:45:30.6175425 -> 6175425 2009-06-15T13:45:30.0001150 -> 0001150 |
“F” | 如果非零,则为日期和时间值的十分之几秒 | 2009-06-15T13:45:30.6170000 -> 6 2009-06-15T13:45:30.0500000 ->(无输出) |
“FF” | 如果非零,则为日期和时间值的百分之几秒。 | 2009-06-15T13:45:30.6170000 -> 61 2009-06-15T13:45:30.0050000 ->(无输出) |
“FFF” | 如果非零,则为日期和时间值的千分之几秒 | 2009-06-15T13:45:30.6170000 -> 617 2009-06-15T13:45:30.0005000 ->(无输出) |
“FFFF” | 如果非零,则为日期和时间值的万分之几秒 | 2009-06-15T13:45:30.5275000 -> 5275 2009-06-15T13:45:30.0000500 ->(无输出) |
“FFFFF” | 如果非零,则为日期和时间值的十万分之几秒 | 2009-06-15T13:45:30.6175400 -> 61754 2009-06-15T13:45:30.0000050 ->(无输出) |
“FFFFFF” | 如果非零,则为日期和时间值的百万分之几秒 | 2009-06-15T13:45:30.6175420 -> 617542 2009-06-15T13:45:30.0000005 ->(无输出) |
“FFFFFFF” | 如果非零,则为日期和时间值的千万分之几秒 | 2009-06-15T13:45:30.6175425 -> 6175425 2009-06-15T13:45:30.0001150 -> 000115 |
“g”、“gg” | 时期或纪元 | 2009-06-15T13:45:30.6170000 -> A.D. |
“h” | 采用 12 小时制的小时(从 1 到 12) | 2009-06-15T01:45:30 -> 1 2009-06-15T13:45:30 -> 1 |
“hh” | 采用 12 小时制的小时(从 01 到 12) | 2009-06-15T01:45:30 -> 01 2009-06-15T13:45:30 -> 01 |
“H” | 采用 24 小时制的小时(从 0 到 23) | 2009-06-15T01:45:30 -> 1 2009-06-15T13:45:30 -> 13 |
“HH” | 采用 24 小时制的小时(从 00 到 23)。 | 2009-06-15T01:45:30 -> 01 2009-06-15T13:45:30 -> 13 |
“K” | 时区信息 | 2009-06-15T13:45:30, Kind Unspecified -> 2009-06-15T13:45:30, Kind Utc -> Z 2009-06-15T13:45:30, Kind Local -> -07:00(取决于本地计算机的设置) |
“m” | 分钟(0 到 59) | 2009-06-15T01:09:30 -> 9 2009-06-15T13:29:30 -> 29 |
“mm” | 分钟(00 到 59) | 2009-06-15T01:09:30 -> 09 2009-06-15T01:45:30 -> 45 |
“M” | 月份(1 到 12) | 2009-06-15T13:45:30 -> 6 |
“MM” | 月份(1 到 12) | 2009-06-15T13:45:30 -> 06 |
“MMM” | 月份的缩写名称 | 2009-06-15T13:45:30 -> Jun |
“MMMM” | 月份的完整名称 | 2009-06-15T13:45:30 -> June |
“s” | 秒(0 到 59) | 2009-06-15T13:45:09 -> 9 |
“ss” | 秒(00 到 59) | 2009-06-15T13:45:09 -> 09 |
“t” | AM/PM 指示符的第一个字符 | 2009-06-15T13:45:30 -> P |
“tt” | AM/PM 指示符 | 2009-06-15T13:45:30 -> PM |
“y” | 年份(0 到 99) | 0001-01-01T00:00:00 -> 1 0900-01-01T00:00:00 -> 0 1900-01-01T00:00:00 -> 0 2009-06-15T13:45:30 -> 9 2019-06-15T13:45:30 -> 19 |
“yy” | 年份(00 到 99) | 0001-01-01T00:00:00 -> 01 0900-01-01T00:00:00 -> 00 1900-01-01T00:00:00 -> 00 2019-06-15T13:45:30 -> 19 |
“yyy” | 年份(最少三位数字) | 0001-01-01T00:00:00 -> 001 0900-01-01T00:00:00 -> 900 1900-01-01T00:00:00 -> 1900 2009-06-15T13:45:30 -> 2009 |
“yyyy” | 由四位数字表示的年份 | 0001-01-01T00:00:00 -> 0001 0900-01-01T00:00:00 -> 0900 1900-01-01T00:00:00 -> 1900 2009-06-15T13:45:30 -> 2009 |
“yyyyy” | 由五位数字表示的年份 | 0001-01-01T00:00:00 -> 00001 2009-06-15T13:45:30 -> 02009 |
“z” | 相对于 UTC 的小时偏移量,无前导零。 | 2009-06-15T13:45:30-07:00 -> -7 |
“zz” | 相对于 UTC 的小时偏移量,带有表示一位数值的前导零。 | 2009-06-15T13:45:30-07:00 -> -07 |
“zzz” | 相对于 UTC 的小时和分钟偏移量 | 2009-06-15T13:45:30-07:00 -> -07:00 |
":" | 时间分隔符 | 2009-06-15T13:45:30 -> : |
"/" | 日期分隔符。 | 2009-06-15T13:45:30 -> / |
"string" 'string' |
文本字符串分隔符 | 2009-06-15T13:45:30 ("arr:" h:m t) -> arr: 1:45 P |
% | 将下面的字符定义为自定义格式说明符。 | 2009-06-15T13:45:30 (%h) -> 1 |
\ | 转义字符 | 2009-06-15T13:45:30 (h \h) -> 1 h |
任何其他字符 | 字符将复制到未更改的结果字符串。 | 2009-06-15T01:45:30 (arr hh:mm t) -> arr 01:45 A |
示例:在Unity中测试
using System;
using UnityEngine;
public class StringText : MonoBehaviour
{
void Start()
{
//21:37:09
Debug.LogFormat("{0:HH:mm:ss}", DateTime.Now);
//09:37:09 下午
Debug.LogFormat("{0:hh:mm:ss tt}", DateTime.Now);
//2022-06-10
Debug.LogFormat("{0:yyyy-MM-dd}", DateTime.Now);
//2022:06:10
Debug.LogFormat("{0:yyyy:MM:dd}", DateTime.Now);
//2022/06/10
Debug.LogFormat("{0:yyyy/MM/dd}", DateTime.Now);
//2022年06月10日
Debug.LogFormat("{0:yyyy年MM月dd日}", DateTime.Now);
//2022年06月10日 09:39:55 下午
Debug.LogFormat("{0:yyyy年MM月dd日 hh:mm:ss tt}", DateTime.Now);
//2022年06月10日 21:40:32
Debug.LogFormat("{0:yyyy年MM月dd日 HH:mm:ss}", DateTime.Now);
//A.D. 2022年06月10日 21:42:14
Debug.LogFormat("{0:g yyyy年MM月dd日 HH:mm:ss}", DateTime.Now);
//2022 - 06 - 10 21:43:21Z
Debug.LogFormat("{0:u}", DateTime.Now);
//2022年6月10日 13:47:04
Debug.LogFormat("{0:U}", DateTime.Now);
//21:47
Debug.LogFormat("{0:t}", DateTime.Now);
//21:47:04
Debug.LogFormat("{0:T}", DateTime.Now);
//2022-06-10T21:47:04
Debug.LogFormat("{0:s}", DateTime.Now);
//2022/6/10 21:47
Debug.LogFormat("{0:g}", DateTime.Now);
//2022/6/10 21:47:04
Debug.LogFormat("{0:G}", DateTime.Now);
//2022年6月10日 21:47:04
Debug.LogFormat("{0:F}", DateTime.Now);
//2022年6月10日 21:47
Debug.LogFormat("{0:f}", DateTime.Now);
//2022年6月10日
Debug.LogFormat("{0:D}", DateTime.Now);
//2022/6/10
Debug.LogFormat("{0:d}", DateTime.Now);
//六月
Debug.LogFormat("{0:MMMM}", DateTime.Now);
//21
Debug.LogFormat("{0:HH}", DateTime.Now);
}
}
运行效果:
上述测试打印出来的Log
Log
21:58:00
UnityEngine.Debug:LogFormat (string,object[])
StringText:Start () (at Assets/StringText.cs:10)
Log
09:58:00 下午
UnityEngine.Debug:LogFormat (string,object[])
StringText:Start () (at Assets/StringText.cs:12)
Log
2022-06-10
UnityEngine.Debug:LogFormat (string,object[])
StringText:Start () (at Assets/StringText.cs:14)
Log
2022:06:10
UnityEngine.Debug:LogFormat (string,object[])
StringText:Start () (at Assets/StringText.cs:16)
Log
2022/06/10
UnityEngine.Debug:LogFormat (string,object[])
StringText:Start () (at Assets/StringText.cs:18)
Log
2022年06月10日
UnityEngine.Debug:LogFormat (string,object[])
StringText:Start () (at Assets/StringText.cs:20)
Log
2022年06月10日 09:58:00 下午
UnityEngine.Debug:LogFormat (string,object[])
StringText:Start () (at Assets/StringText.cs:22)
Log
2022年06月10日 21:58:00
UnityEngine.Debug:LogFormat (string,object[])
StringText:Start () (at Assets/StringText.cs:24)
Log
A.D. 2022年06月10日 21:58:00
UnityEngine.Debug:LogFormat (string,object[])
StringText:Start () (at Assets/StringText.cs:26)
Log
2022-06-10 21:58:00Z
UnityEngine.Debug:LogFormat (string,object[])
StringText:Start () (at Assets/StringText.cs:28)
Log
2022年6月10日 13:58:00
UnityEngine.Debug:LogFormat (string,object[])
StringText:Start () (at Assets/StringText.cs:30)
Log
21:58
UnityEngine.Debug:LogFormat (string,object[])
StringText:Start () (at Assets/StringText.cs:32)
Log
21:58:00
UnityEngine.Debug:LogFormat (string,object[])
StringText:Start () (at Assets/StringText.cs:34)
Log
2022-06-10T21:58:00
UnityEngine.Debug:LogFormat (string,object[])
StringText:Start () (at Assets/StringText.cs:36)
Log
2022/6/10 21:58
UnityEngine.Debug:LogFormat (string,object[])
StringText:Start () (at Assets/StringText.cs:38)
Log
2022/6/10 21:58:00
UnityEngine.Debug:LogFormat (string,object[])
StringText:Start () (at Assets/StringText.cs:40)
Log
2022年6月10日 21:58:00
UnityEngine.Debug:LogFormat (string,object[])
StringText:Start () (at Assets/StringText.cs:42)
Log
2022年6月10日 21:58
UnityEngine.Debug:LogFormat (string,object[])
StringText:Start () (at Assets/StringText.cs:44)
Log
2022年6月10日
UnityEngine.Debug:LogFormat (string,object[])
StringText:Start () (at Assets/StringText.cs:46)
Log
2022/6/10
UnityEngine.Debug:LogFormat (string,object[])
StringText:Start () (at Assets/StringText.cs:48)
Log
六月
UnityEngine.Debug:LogFormat (string,object[])
StringText:Start () (at Assets/StringText.cs:50)
Log
21
UnityEngine.Debug:LogFormat (string,object[])
StringText:Start () (at Assets/StringText.cs:52)
一个应用示例演示: