【问题标题】:DateTime formats used in InvariantCultureInvariantCulture 中使用的日期时间格式
【发布时间】:2018-03-28 10:28:47
【问题描述】:

我必须在 Javascript 中预先验证一个字符串,该字符串将是 c# 中的 DateTime。 DateTime 解析使用 InvariantCulture。

有人知道为 InvariantCulture 定义的 DateTime 格式吗?

【问题讨论】:

    标签: c# datetime-format invariantculture


    【解决方案1】:

    从这里编译信息:https://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-date-and-time-format-strings

    • 短日期模式(“d”):MM/dd/yyyy
    • 长日期模式(“D”):dddd, dd MMMM yyyy
    • 完整日期短时间(“f”):dddd, dd MMMM yyyy HH:mm
    • 完整日期长时间(“F”):dddd, dd MMMM yyyy HH:mm:ss
    • 一般日期短时间(“g”):MM/dd/yyyy HH:mm
    • 一般日期长时间(“G”):MM/dd/yyyy HH:mm:ss
    • 月份(“M”、“m”):MMMM dd
    • 往返(“O”、“o”):yyyy-MM-ddTHH:mm:ss.fffffffK
    • RFC1123(“R”,“r”):ddd, dd MMM yyyy HH:mm:ss GMT
    • 可排序(“s”):yyyy-MM-ddTHH:mm:ss
    • 短时间(“t”):HH:mm
    • 长时间(“T”):HH:mm:ss
    • 通用可排序(“u”):yyyy-MM-dd HH:mm:ssZ
    • 通用完整(“U”):dddd, dd MMMM yyyy HH:mm:ss
    • 年月(“Y”、“y”):yyyy MMMM

    【讨论】:

    • 似乎MM/dd/yyyy 几乎只被美国人使用(en-US),但InvariantCulture 表面上是通用的,如果InvariantCulture 使用ISO 8601 会更好(@987654341 @ 和 HH:mm:ss) 日期和时间格式,而不是其当前格式。例如,这意味着我不能使用 InvariantCulture 进行适当的文化中立日志记录。
    【解决方案2】:

    很容易测试。

    public static void Main()
    {
        var d = DateTime.Now;
    
        Console.WriteLine("Date format (long):  {0}", d.ToString("D", CultureInfo.InvariantCulture));
        Console.WriteLine("Date format (short): {0}", d.ToString("d", CultureInfo.InvariantCulture));
        Console.WriteLine("Full format (long):  {0}", d.ToString("F", CultureInfo.InvariantCulture));
        Console.WriteLine("Full format (short): {0}", d.ToString("f", CultureInfo.InvariantCulture));
        Console.WriteLine("Time format (long):  {0}", d.ToString("T", CultureInfo.InvariantCulture));
        Console.WriteLine("Time format (short): {0}", d.ToString("t", CultureInfo.InvariantCulture));
        Console.WriteLine("General format (long):  {0}", d.ToString("G", CultureInfo.InvariantCulture));
        Console.WriteLine("General format (short): {0}", d.ToString("g", CultureInfo.InvariantCulture));
    }
    

    }

    输出:

    Date format (long):  Monday, 16 October 2017
    Date format (short): 10/16/2017
    Full format (long):  Monday, 16 October 2017 20:12:45
    Full format (short): Monday, 16 October 2017 20:12
    Time format (long):  20:12:45
    Time format (short): 20:12
    General format (long):  10/16/2017 20:12:45
    General format (short): 10/16/2017 20:12
    

    DotNetFiddle 上的代码。

    【讨论】:

      【解决方案3】:

      它或多或少与 en-us 相同,但使用 24 小时制而非上午/下午 12 小时制,并填写完整的 MM/DD/YYYY。

      var date1 = d.ToString(CultureInfo.InvariantCulture);   // "05/21/2014 22:09:28"
      var date2 = d.ToString(new CultureInfo("en-US"));       // "5/21/2014 10:09:28 PM"
      

      【讨论】:

        【解决方案4】:
        • “O”或“o”:yyyy-MM-ddTHH:mm:ss.fffffffzz
        • “R”或“r”:ddd, dd MMM yyyy HH:mm:ss
        • “s”:yyyy-MM-ddTHH:mm:ss
        • “你”:yyyy-MM-dd HH:mm:ssZ

        来源[1]:https://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-date-and-time-format-strings

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-12-10
          • 2020-03-10
          • 1970-01-01
          • 2013-04-23
          相关资源
          最近更新 更多