【问题标题】:Format date in C#在 C# 中格式化日期
【发布时间】:2010-01-28 01:45:27
【问题描述】:

我有一个用于显示日期时间的字符串,例如:Mon, dd Dec YYYY hh:mm:ss

我想这样显示它:dd Dec YYYY。有什么简单的方法吗?

【问题讨论】:

    标签: c# datetime


    【解决方案1】:

    你可以调用 DateTime 类的格式化方法

    DateTime time = DateTime.ParseExact("Mon, 28 Dec 2009 04:34:17", "ddd, dd MMM yyyy hh:mm:ss", CultureInfo.InvariantCulture);
    string output = time.ToString("dd MMM yyyy", CultureInfo.InvariantCulture);
    

    Here 是格式字符串的选项列表。

    【讨论】:

      【解决方案2】:

      来自http://www.csharp-examples.net/string-format-datetime/

      // create date time 2008-03-09 16:05:07.123
      DateTime dt = new DateTime(2008, 3, 9, 16, 5, 7, 123);
      
      String.Format("{0:y yy yyy yyyy}", dt);  // "8 08 008 2008"   year
      String.Format("{0:M MM MMM MMMM}", dt);  // "3 03 Mar March"  month
      String.Format("{0:d dd ddd dddd}", dt);  // "9 09 Sun Sunday" day
      String.Format("{0:h hh H HH}",     dt);  // "4 04 16 16"      hour 12/24
      String.Format("{0:m mm}",          dt);  // "5 05"            minute
      String.Format("{0:s ss}",          dt);  // "7 07"            second
      String.Format("{0:f ff fff ffff}", dt);  // "1 12 123 1230"   sec.fraction
      String.Format("{0:F FF FFF FFFF}", dt);  // "1 12 123 123"    without zeroes
      String.Format("{0:t tt}",          dt);  // "P PM"            A.M. or P.M.
      String.Format("{0:z zz zzz}",      dt);  // "-6 -06 -06:00"   time zone
      

      另见:

      Custom Date and Time Format Strings - MSDN

      如果你只有字符串,只需将字符串拆分为一个数组,然后以另一个顺序连接你想要的部分

      String str = "Mon, dd Dec YYYY hh:mm:ss";
      String[] strArr = str.Split(" ");
      str = strArr[2] + " " + strArr[3];
      

      如果日期可以更改,请执行 SLaks 在他的回答中发布的内容

      【讨论】:

      • 由于只有一个参数,你应该调用DateTime.ToString
      • 他没有日期时间,他有一个字符串
      • 数组不是个好主意,如果日期格式发生变化怎么办?说它变成了 2010 年 1 月 28 日?
      • 不要这样做。如果日期格式发生变化,它将导致脆弱的代码意外返回无意义的数据。相反,您应该将字符串解析为 DateTime,以便在格式更改时得到错误而不是数据损坏。
      • 是否有必要这样做,即使他没有说它可以改变?,也比创建一个新的日期对象更快或更慢?
      【解决方案3】:
      DateTime myDateTime = DateTime.Parse(myStringContainingDate);
      
      myDateTime.ToString("dd MMM yyyy")
      

      应该做的伎俩

      【讨论】:

        【解决方案4】:

        您可以只使用子字符串,因为它总是 11 个字符,从位置 5 开始。

        【讨论】:

          【解决方案5】:

          查看http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

          我相信正确的字符串应该是 dd MMM yyyy

          【讨论】:

            【解决方案6】:
            DateTime d = DateTime.Parse(yourDateString);
            Console.WriteLine(d.ToString("dd MMM YYYY"));
            

            完整规格here

            【讨论】:

              【解决方案7】:

              C# 6.0 中,您可以使用string interpolation 来显示格式化日期。

              DateTime fullDate = DateTime.Parse("Sat, 17 JUL 2021 02:22:22");
              string date = $"{fullDate: dd MMM yyyy}";
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2013-07-07
                • 2011-11-12
                • 2011-06-21
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多