2016-02-03 1 views
0

Я пытаюсь изменить дату в формате мм/дд/гггг дд/мм/гггг, вот то, что я до сих пор:Изменение формата даты текущей культуры

 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, это будет смотреть на первый столбец, который думает, что его месяц, и ошибка, говорящая, что это не часть григорианский каландр.

любые предложения?

Edit: ParseExact дает тот же результат

+2

Почему? Даты не имеют форматов, они двоичные. Форматы вступают в игру только тогда, когда вы хотите сгенерировать строку из даты или проанализировать строку для объекта DateTime. Если вы хотите изменить дату появления, измените значение [StringFormat] (https://msdn.microsoft.com/en-us/library/system.windows.data.bindingbase.stringformat (v = vs.110) .aspx) свойство привязки данных –

+0

Да, это сработало, я просто попадал в wpf и привязывал данные, поэтому, когда я быстро просмотрел, как это сделать, я не думал, что это могло быть сделано в привязке , Вот почему я пытался это сделать в коде. –

ответ

2

Даты не имеют форматы, они представляют собой двоичные значения. Форматы вступают в игру только тогда, когда вы хотите сгенерировать строку из даты или проанализировать строку для объекта DateTime.

Если вы хотите изменить способ отображения даты, измените StringFormat свойство данных связывания, например:

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

Еще лучше, хотя, чтобы обеспечить ваше приложение использует правильную культуру. Обычно это означает, что ничего нет.: если, например, язык вашего пользователя установлен на французский, дата будет отображаться с использованием французского формата. Вам нужно только указать, какой стандартный формат даты, чтобы использовать, например, для короткой даты:

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

Если вы хотите переопределить культуры пользователя, вы можете установить Thread.CurrentUICulture и т.д.

Вы также можете указать явная культура в себя связывание:

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

вы не закодировав формат, но являются закодировав культуры.