【问题标题】:how to tell convert.todatetime that the input is in format dd-mm-yyyy如何告诉 convert.todatetime 输入格式为 dd-mm-yyyy
【发布时间】:2010-08-21 08:36:51
【问题描述】:

编写了应该的代码

  • 获取用户输入的时间和日期

  • 并将其转换为日期时间格式

  • 为 hrs 添加一些值并显示它。

当用户以默认格式输入时,我的代码可以正常工作,但是当用户输入像 dd-mm-yyyy 这样的日期而不是 mm/dd/yyyy(默认)时,它就不起作用了。

如何更改转换函数来解决这个问题?

    DateTime dt_calc = new DateTime();
    dt_calc = Convert.ToDateTime(inputt);

【问题讨论】:

    标签: c# datetime


    【解决方案1】:

    要将日期转换为dd-mm-yyyy 格式,请使用:

    var dateValue = DateTime.Parse("11/03/1989", new CultureInfo("en-GB", false));
    

    但不要忘记在标题中添加System.Globalization 或直接内联:

    var dateValue = DateTime.Parse("11/03/1989", new System.Globalization.CultureInfo("en-AU", false));
    

    【讨论】:

      【解决方案2】:

      不要使用 Convert - DateTimeParseTryParseParseExactTryParseExact 采用 TryParseExact 的方法,尽管为此只需使用 parse 即可:

      DateTime dt_calc = DateTime.Parse(inputt);
      

      如果您希望安全,请使用 `TryParse:

      DateTime dt_calc;
      DateTime.TryParse(inputt, out dt_calc); // TryParse returns true if success, false if not
      

      【讨论】:

      • 我猜你可以尝试一些已知的格式,看看哪种结果是有效的。但是,只有“ParseExact”方法采用格式字符串。
      【解决方案3】:

      看看这个扩展了 DateTime 解析功能的Code Project。或者在 GitHub 上有一个 Natural Date Parser 类。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-18
        • 1970-01-01
        • 2019-02-23
        • 1970-01-01
        • 2016-01-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多