我正在尝试将JSON feed绑定到要在XAML工作表中显示的类。 所有这些都可以。 但是,我遇到的问题之一是将DateTime值(以字符串形式输入)转换为另一种格式。

例如,JSON将其提供为:“ 2014-04-20T02:57:00Z”。 我想将其转换为"HH:mm"格式。

public String ArrivalTime
{
    get
    {

        DateTime dt = DateTime.Parse(ArrivalTime);
        string test =  String.Format("{HH:mm}", dt);
        return test;
    }
    set
    {

    }
}

我对存取器不太熟悉,我敢肯定我做错了,但是我希望在正确的轨道上吗? 如何将传入的DateTime字符串动态转换为新的DateTime格式的字符串?

提前致谢!

===============>>#1 票数:1 已采纳

“ WPF”方法是使视图对其进行转换。 您可以使用IValueConverter接口将数据转换为想要显示的方式。

您需要输入您的逻辑来确定日期应该是多少。 这是我的猜测。 我不知道该如何转换回来,因为您只有时间部分而不是整个日期时间。 另外,不需要MarkupExtension,这是一个很好的选择。 有关更多信息,请参见http://wpftutorial.net/ValueConverters.html

public class JSONDateToDate : MarkupExtension,  IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        var jSONDate = parameter as string;
        if (!string.IsNullOrEmpty(jSONDate))
        {
            DateTime dt;
            if DateTime.TryParse(jSONDate, out dt)
            {
                return dt;
            }
        }
        // If didn't pass in string or TryParse failed return back empty datetime
        return new DateTime();
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }

    // Not needed just nice
    public override object ProvideValue(IServiceProvider serviceProvider)
    {
        return this;
    }
}

在您的XAML中,您将像

<TextBox Name="tbxArrivalTime" Text="{Binding Path=ArrivalTime, StringFormat=" \{0:HH:mm\}". Converter={x:JSONDateToDate } />

只是警告一下,我没有测试所有这些代码,并且XAML中可能存在一些小问题,因为如果不进行实际的连接就很难键入。

根据获取日期字符串而不是数字的方式更新了我的答案。 您可以在IValueConverter中返回格式化的字符串,也可以返回日期时间。 如果返回日期时间,则使用stringformat将值格式化为字符串。 如果您有很多确切的格式,我会将其放在值转换器中,否则我的值转换器将只返回一个日期时间,因为我可能会从中获得更多的重用性。

===============>>#2 票数:0

如果您的数据应该是日期/时间,则应确保它是日期/时间。 只需在反序列化Feed中添加另一步即可对其进行更正,那么这只是一个演示问题:

<TextBox Name="tbxArrivalTime" Text="{Binding Path=ArrivalTime, Format=\{0:HH:mm\}}" />

  ask by ForeverLearning translate from so

未解决问题?本站智能推荐:

1回复

WCF将不接受具有datetime属性的对象(400错误的请求)

这是我关于SO的第一篇文章,所以如果我没有提供足够的信息,请原谅我。 我有一个WPF应用,试图将包含DateTime属性的EmployeeLogin对象发送到WCF Web服务,并且在调用此EmployeeLogIn()方法时,始终收到400错误的请求错误。 我已经在很多地方搜索了答案,但是
4回复

无法将DateTime转换为字符串

我正在尝试将DateTime转换为字符串,但实际上在getFixtures方法中传递的dt变量以红色下划线。 错误: 无法将DateTime转换为字符串。 我究竟做错了什么?
3回复

将字符串转换为DateTime格式-格式错误

我真的无法理解为什么这不起作用。 我有一个例外: 无法将字符串识别为有效的DateTime。 我正在从文件中读取字符串日期,看起来像这样2/27/2014 10:10:55 此方法接收文件名并推断我需要的数据(纬度,经度,日期) 一旦我将文件数据保存在List
1回复

将数据绑定到DateTime.Now.DayOfWeek的正确方法?

我想绑定DateTime.Now.DayOfWeek属性。 这将通过数据绑定显示在视图中。 绑定DayOfWeek属性没有问题,但是.....如何不使用计时器连续(例如每小时)检查一天的结束时间?
1回复

将字符串转换为带时区的日期时间

我在TextBox中具有此值: 我如何使用此值将其保存为DateTime到数据库中
1回复

将DateTime格式化为字符串

以下代码: 在文本框中生成以下输出: 从输出的第一行开始,很明显在我的PC的区域设置中,日期/时间被格式化为date.month.year HHmm.ss 输出的第二行让我很困惑。 虽然我为变量s指定了MM/dd/yyyy格式,但DateTime对象的格式为MM.dd.y
1回复

如何在WPF数据绑定中通知DateTime更改事件?

我有一个WPF APP,它使用像这样的绑定 和转换器如下 问题是如何观察每天的DateTime变化? 我需要此颜色转换器通过其自身动态更改其颜色,但是当DateTime.Now更改时,不会通知更改颜色。 最好的祝福。 非常感谢。
2回复

WPF中的DateTime和数据绑定-前导零和空白标签

我有一个绑定到DateTime的WPF标签,我需要它从1/1/1开始。 设置为1/1/1时,标签根本不会出现。 如果我更改任何数字,它会在年份(1/2/0001)前面显示前导零。 在使用WinForms之前,所有这些工作都很好。 有人知道将标签设置为1/1/1时如何显示标签和/或如何
4回复

如何设置DateTime格式而不转换为字符串

我有一个具有日期时间属性的Person类。 Person类型的对象作为oData响应发送回。 响应为json。 网络上的许多帮助建议使用ToString并指定格式。 如何在不求助于字符串更改的情况下以mm / dd / yyyy设置日期,以便在json中看到相同的内容? 问候
2回复

将空字符串解析为DateTime会使App Unclosable

当我在DateTime.Parse使用空字符串作为参数时,关闭所有窗口后,应用程序仍在运行,如下所示: 但是,当我输入日期时,例如11/26/1995 ,应用程序在关闭所有窗口后停止运行: 这是DateTime.Parse一个功能,还是别的什么?