首页 / 问答 / C#/.NET/.NET Core应用程序编程开发中如何将日期/时间格式化成指定的字符串格式?

C#/.NET/.NET Core应用程序编程开发中如何将日期/时间格式化成指定的字符串格式?

.NET C# 字符串 日期 .NET Core 3.16K 次浏览
0

在C#/.NET/.NET Core应用程序编程开发中,如何将日期/时间格式化成指定的字符串格式?比如需要将时期格式化成类似yyyyMMddHHmmss这样的字符串格式,应该如何操作呢?

回复 [×]
提交评论
请输入评论内容

3 个回答

  • 0

    以下列举.NET内置的关于日期/时间格式化的可能的格式:

    // 初始化一个时期
    DateTime dt = new DateTime(2008, 3, 9, 16, 5, 7, 123);
    
    String.Format("{0:y yy yyy yyyy}",      dt);  // "8 08 008 2008"   格式化年部分
    String.Format("{0:M MM MMM MMMM}",      dt);  // "3 03 Mar March"  格式化月部分
    String.Format("{0:d dd ddd dddd}",      dt);  // "9 09 Sun Sunday" 格式化天部分
    String.Format("{0:h hh H HH}",          dt);  // "4 04 16 16"      格式化小时部分
    String.Format("{0:m mm}",               dt);  // "5 05"            格式化分钟部分
    String.Format("{0:s ss}",               dt);  // "7 07"            格式化秒部分
    String.Format("{0:f ff fff ffff}",      dt);  // "1 12 123 1230"   格式化毫秒部分(有小数)
    String.Format("{0:F FF FFF FFFF}",      dt);  // "1 12 123 123"    格式化毫秒部分(不包含末尾的零)
    String.Format("{0:t tt}",               dt);  // "P PM"            A.M. 或者 P.M.
    String.Format("{0:z zz zzz}",           dt);  // "-6 -06 -06:00"   时区
    
    // 月份/天部分包含/不包含0的补位
    String.Format("{0:M/d/yyyy}",           dt);  // "3/9/2008"
    String.Format("{0:MM/dd/yyyy}",         dt);  // "03/09/2008"
    
    // 英文语言中天/月部分的名称格式化
    String.Format("{0:ddd, MMM d, yyyy}",   dt);  // "Sun, Mar 9, 2008"
    String.Format("{0:dddd, MMMM d, yyyy}", dt);  // "Sunday, March 9, 2008"
    
    // 两位/四位的年部分格式化
    String.Format("{0:MM/dd/yy}",           dt);  // "03/09/08"
    String.Format("{0:MM/dd/yyyy}",         dt);  // "03/09/2008"
    

    我们也可以标准的日期格式化字符来处理,如下:

    String.Format("{0:t}", dt);  // "4:05 PM"
    String.Format("{0:d}", dt);  // "3/9/2008"
    String.Format("{0:T}", dt);  // "4:05:07 PM"
    String.Format("{0:D}", dt);  // "Sunday, March 09, 2008"
    String.Format("{0:f}", dt);  // "Sunday, March 09, 2008 4:05 PM"
    String.Format("{0:F}", dt);  // "Sunday, March 09, 2008 4:05:07 PM"
    String.Format("{0:g}", dt);  // "3/9/2008 4:05 PM"
    String.Format("{0:G}", dt);  // "3/9/2008 4:05:07 PM"
    String.Format("{0:m}", dt);  // "March 09"
    String.Format("{0:y}", dt);  // "March, 2008"
    String.Format("{0:r}", dt);  // "Sun, 09 Mar 2008 16:05:07 GMT"
    String.Format("{0:s}", dt);  // "2008-03-09T16:05:07"
    String.Format("{0:u}", dt);  // "2008-03-09 16:05:07Z"
    
    Rector的个人主页

    Rector

    2020-04-19 回答

    • 0

      .NET内置了一些常用的日期/时间格式化的方法,比如:

      DateTime.Now.ToString("yyyyMMddHHmmss");
      

      注:其中的yyyyMMddHHmmss是区分大小写的。

      Rector的个人主页

      Rector

      2020-04-19 回答

      • 0

        如果在C# 6.0及以上的版本中,你还可以使用$插值法来格式化日期/时间,如下:

        DateTime dt = new DateTime(2008, 3, 9, 16, 5, 7, 123);
        
        $"{dt:y yy yyy yyyy}";  // "8 08 008 2008"   年
        $"{dt:M MM MMM MMMM}";  // "3 03 Mar March"  月
        $"{dt:d dd ddd dddd}";  // "9 09 Sun Sunday" 日
        $"{dt:h hh H HH}";      // "4 04 16 16"      小时 12/24
        $"{dt:m mm}";           // "5 05"            分钟
        $"{dt:s ss}";           // "7 07"            秒
        $"{dt:f ff fff ffff}";  // "1 12 123 1230"   格式化毫秒部分(有小数)
        $"{dt:F FF FFF FFFF}";  // "1 12 123 123"    格式化毫秒部分(不包含末尾的零)
        $"{dt:t tt}";           // "P PM"            A.M. 或者 P.M.
        $"{dt:z zz zzz}";       // "-6 -06 -06:00"   时区
        
        // 月份/天部分包含/不包含0的补位
        $"{dt:M/d/yyyy}";    // "3/9/2008"
        $"{dt:MM/dd/yyyy}";  // "03/09/2008"
        
        // 英文语言中天/月部分的名称格式化
        $"{dt:ddd, MMM d, yyyy}";    // "Sun, Mar 9, 2008"
        $"{dt:dddd, MMMM d, yyyy}";  // "Sunday, March 9, 2008"
        
        // 两位/四位的年部分格式化
        $"{dt:MM/dd/yy}";    // "03/09/08"
        $"{dt:MM/dd/yyyy}";  // "03/09/2008"
        
        Rector的个人主页

        Rector

        2020-04-19 回答

        我来回答