1

一旦从 DataPicker 中选择了日期,我就有了这个转换器来获取当前时间。在字符串日期中,我得到了从 DatePicker 中选择的值,但我似乎不能只得到日期。进入 Value 属性的格式是 9/24/2013 12:00:00 我希望它是 9/24/2013

我得到的错误是“错误 122 方法 'ToString' 没有重载需要 1 个参数”

public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
            if (value is DateTime)
            {
            string date = value.ToString("d/M/yyyy");
            return (date);
            }

             return string.Empty;
}
4

5 回答 5

4

您需要先将其转换为 DateTime:

public object Convert(object value, Type targetType, object parameter,
                      System.Globalization.CultureInfo culture)
{
    if (value is DateTime)
    {
        DateTime test = (DateTime) value;
        string date = test.ToString("d/M/yyyy");
        return date;
    }

    return string.Empty;
}
于 2013-09-05T14:17:53.267 回答
1

您应该将 value 转换为type DateTime,因为.ToString(String f)Object

if (value is DateTime)
{
   var dateTime = (DateTime)value;
   return dateTime.ToString("dd/MM/yyyy");
}

return string.Empty;
于 2013-09-05T14:15:02.903 回答
0

如果您在 WPF DatePicker 控件上使用 Converter,则应注意 WPF DatePicker 本身将重新格式化日期,尽管您使用了转换器。您必须设置Datepicker 的样式以包含 StringFormat

这里有一个相关的问题:如何在 DatePicker 中仅显示 Month Year 字符串格式,该格式显示附加属性以修改 DatePicker 的行为以显示自定义格式。这是必需的,因为 WPF Datepicker 控件本身存在缺陷。

另请注意,有一些注意事项,特别是 DatePicker 将在其默认字符串格式和您应用的字符串格式之间闪烁!我在上述问题中回答了将自定义格式应用于 WPF Datepicker而不闪烁的解决方法。

希望您能找到您正在寻找的解决方案。

于 2013-09-05T14:20:55.307 回答
0

检查值的类型后,您需要将其转换为适当的类型,以便能够使用格式参数执行“ToString”调用。尝试:

if (value is DateTime)
{
    var dateValue = value as DateTime;
    string date = dateValue.ToString("dd/MM/yyyy");
    return date; 
}
于 2013-09-05T14:15:54.407 回答
-2
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
    if (value is DateTime)
    {
        string date=value.Date.ToShortDateString();
        return (date);
    }

    return string.Empty;
}
于 2013-09-05T14:14:38.973 回答