【问题标题】:Parsing datetime in textbox在文本框中解析日期时间
【发布时间】:2011-10-10 00:46:05
【问题描述】:

我在一个简单的文本框中有日期时间。文本框值的格式可以是 DD/MM/YYYY 或 MM/DD/YYYY。我想使用 DateTime.Parse(string) 来解析它。目前对于某些日期它可以工作,而对于其他日期它会抛出异常。我该如何处理?我如何确保无论提供什么格式,它总是解析正确(只要它是有效日期)?

提前致谢:)

编辑

由于没有固定答案,我修改了我的问题以询问如何将其转换为 MM/DD/YYYY?我应该在 DateTime.Parse 的 IFormatProvider 中提供什么?

【问题讨论】:

  • 你检查过.TryParse 吗?
  • 不,我没有检查。我应该检查吗?
  • 如果您可以输入 DD/MM/YYYY 和 MM/DD/YYYY,您怎么知道 06/12/2011 解析为 6 月 12 日还是 12 月 6 日?
  • 我相信它使用了当前文化的格式。

标签: c# asp.net datetime date


【解决方案1】:

DateTime 需要知道如何解析日期,否则它不会知道 05/07/2011 是 7 月 5 日还是 5 月 7 日。使用日历控件消除这种歧义不是更好吗?

【讨论】:

  • 肯定会的。但是我得到了其他人开发的代码,他使用文本框和 jquery 日历控件开发。
  • 这不是解决方案,因为没有解决 PARSE 问题
【解决方案2】:

我建议使用固定格式。您甚至可以允许您的用户选择他们想要使用的格式。但是你绝对需要知道格式。然后你可以使用DateTime.TryParseExact。例如,01/03/2011 是什么意思?它可以是 mm/dd/yyyy dd/mm/yyyy。你真的需要明确这一点。

【讨论】:

    【解决方案3】:

    我来这里是想弄清楚是否能找到比我更好的解决方案。 我已经在其他帖子和谷歌中看到了一些这种解决方案的建议。恕我直言,效果更好的是:

        DateTime date;
        bool isDate = (DateTime.TryParseExact(txtbxDATETIME.Value, 
                                                   "yyyy'/'MM'/'dd",
                                                    CultureInfo.InvariantCulture,
                                                    DateTimeStyles.None,
                                                    out date));
       //possible use:
       DateTime someDATEorVAr =  (isDate) ? date : DateTime.Now;
    

    希望有人觉得这很有用

    【讨论】:

      【解决方案4】:

      可以通过使用 TryParse(String, IFormatProvider, DateTimeStyles, DateTime) 变体来解决该解析问题,以便可以将文化信息(我最常使用 CultureInfo.CurrentCulture)传递给它,从而消除歧义。

      DateTime.TryParse

      维杰

      【讨论】:

        猜你喜欢
        • 2010-09-21
        • 2020-02-05
        • 2014-01-29
        • 2021-06-29
        • 2019-01-31
        • 2014-06-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多