日期时间转换器WPF

本文关键字:WPF 转换器 时间 日期 | 更新日期: 2023-09-27 18:30:14

我制作了这个转换器,用于在从DataPicker中选择日期后获取当前时间。在字符串Date中,我得到了从DatePicker中选择的值,但我似乎不能只得到日期。Value属性的格式是2013年9月24日12:00:00我希望它是2013年12月24日

我得到的错误是"错误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;
}

日期时间转换器WPF

您需要先将其转换为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;
}

您应该将值强制转换为DateTime类型,因为Object类型没有ToString(String f)方法。

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

检查值的类型后,需要将其强制转换为适当的类型,以便能够使用format参数执行"ToString"调用。尝试:

if (value is DateTime)
{
    var dateValue = value as DateTime;
    string date = dateValue.ToString("dd/MM/yyyy");
    return date; 
}

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

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

另外请注意,还有一些注意事项,特别是DatePicker将在其默认字符串格式和您应用的字符串格式之间闪烁!我在上面的问题中回答了一个变通方法,可以在没有闪烁的情况下将自定义格式应用于WPF日期选择器。

希望你能找到你想要的解决方案。

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;
}