String.Format自定义日期和时间格式字符串

标准日期和时间格式字符串

日期和时间格式字符串定义由格式设置操作生成的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)

一个应用示例演示:

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
String.format 格式日期是安全的。它能够根据指定的格式日期转换为所需的字符串表示形式。通过使用占位符和格式字符串,可以根据需要自定义日期格式。在引用中的示例中,使用格式字符串"{0:D}"将当前日期格式化为"2009年3月20日"的形式。同样,引用中给出了使用*.ToString()方法来实现相同效果的示例,其中展示了多种日期格式的示例。 String.format 格式日期的安全性在于它提供了灵活性和可靠性,可以根据需求对日期进行格式化,而不会引发任何安全问题。只要使用合适的格式字符串,并注意输入的日期的正确性,就可以安全地使用String.format 格式日期。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [string.Format格式化用法详解](https://blog.csdn.net/a70642869/article/details/103762663)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [C#【基础篇】string.Format格式日期](https://blog.csdn.net/sinat_40003796/article/details/104146583)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王 银

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值