将日期格式更改为当前文化

时间:2016-02-03 11:09:43

标签: wpf vb.net date datetime mvvm

我正在尝试将日期从MM / dd / yyyy更改为dd / MM / yyyy,这是我目前所拥有的:

        Dim d As String = value.ToString("MM/dd/yyyy HH:mm:ss tt")
        Dim formatedDate As Date = Date.Parse(d, CultureInfo.CurrentCulture)
        _ArticleCreated = formatedDate
        OnPropertyChanged("ArticleCreated")

这在某种程度上有效,但它适用于具有第1-12天的日期。似乎仍然认为格式仍然是MM / dd / yyyy,因为当我将日期设置为26/01/2016时,这将看第一列认为它是一个月,并且错误说这不是格里高利日历。

有什么建议吗?

编辑:ParseExact给出相同的结果

1 个答案:

答案 0 :(得分:2)

日期没有格式,它们是二进制值。只有当您想要从日期生成字符串或将字符串解析为DateTime对象时,格式才会起作用。

如果要更改日期的显示方式,请更改数据绑定的StringFormat属性,例如:

<TextBlock Text="{Binding ..., StringFormat=Date: {}{0:dd/MM/yyyy} }" />

更好的选择是确保您的应用程序使用正确的文化。通常这意味着 nothing :如果您的用户的语言环境设置为法语,则日期将使用法语格式显示。您只需指定要使用的标准日期格式,例如短日期:

<TextBlock Text="{Binding ..., StringFormat=d}" />

如果要覆盖用户的文化,可以设置Thread.CurrentUICulture等。

您还可以在绑定本身中指定显式文化:

<TextBlock Text="{Binding ..., StringFormat=d,  ConverterCulture=en-GB}" />

您不会对格式进行硬编码,但 正在对文化进行硬编码。