【问题标题】:Comparing dates does not give me selected date比较日期没有给我选择的日期
【发布时间】:2013-08-16 08:57:29
【问题描述】:

在我的 wpf 应用程序中,我编写了以下代码来比较选定的日期格式。

C#代码:

class Harvest_Base
{

    public static DateTime storeTime(String date)
    {

        DateTime returnValue = new DateTime();

        if (date == "")
            return returnValue;

            //Time or Date Component Does not Exist
            string[] formats= {"M/d/yyyy h:mm:ss tt", "M/d/yyyy h:mm tt", 
               "MM/dd/yyyy hh:mm:ss", "M/d/yyyy h:mm:ss", "yyyy-mm-dd",
               "M/d/yyyy hh:mm tt", "M/d/yyyy hh tt", "M/d/yyyy h:mm", "M/d/yyyy h:mm", 
               "MM/dd/yyyy hh:mm", "M/dd/yyyy hh:mm", 
               "h:mm tt","hh:mm tt","HH:mm:ss","H:mm","HH:mm","h:mmtt"};
            DateTime result;

            if (DateTime.TryParseExact(date, formats, System.Globalization.CultureInfo.InvariantCulture, DateTimeStyles.None, out result))
                returnValue = result;
            else
                returnValue = DateTime.Today;


        return returnValue;

    }

这里的问题是,当我设置断点并检查“日期”对象时,正确显示 mw 选择的日期。日期格式为“yyyy-mm-dd”。如果我选择“2013-08-08”,则 returnValue 将日期显示为“08-01-2013 00:08:00”。它完全是不同的格式。如果我们忽略格式,那么月份是错误的。我该如何解决这个问题?

【问题讨论】:

  • mm 是分钟。使用 MM 数月。
  • 你知道h是12h,H是24h吗?因为有些小时是 12 小时格式,有些是 24 小时格式在你的formats
  • @Tim 非常感谢。它有效。

标签: c# datetime date-format


【解决方案1】:

如果我选择“2013-08-08”,则 returnValue 显示日期为“08-01-2013 00:08:00”

因为 mm 是分钟,而 MM 是几个月,因此它将其转换为分钟。

效果很好

string[] formats= {"yyyy-MM-dd"};
if (DateTime.TryParseExact(date, formats, System.Globalization.CultureInfo.InvariantCulture, DateTimeStyles.None, out result))
    returnValue = result;
else
    returnValue = DateTime.Today;

【讨论】:

  • +1 为了让 OP 清楚,第二行的最后一个是错误的。 mm 而不是 MM
  • 谢谢 xanatos,没有人。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-23
  • 2016-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多