2013-03-15 2 views
0

У меня есть DateTimePicker в WPF. DateTimePicker дать мне европейский форматПреобразование DateTime в США не является хорошим

В моей DateTimePicker, я выбираю «01/02/2014» (в европейском формате)

Я хотел бы прочитать значение, и преобразовать его в shortDateString с Американская культура.

Я сделал это:

CultureInfo m_UsCulture = new CultureInfo("en-us"); 
string str = m_dDate.Date.ToShortDateString().ToString(m_UsCulture); 

переменная ул является: "01/02/2014" вместо "2/1/2014"

ShortDateString, как представляется, ОК, но не «ToString (m_UsCulture);».

Я хотел был бы сделать это в одной строке пожалуйста. У вас есть идея для этой ошибки?

спасибо :)

+1

Что значение в нем, находясь в одной строке? – Oded

+0

Что вы будете делать со строкой, если у вас есть это? –

+2

Вы преобразовываете строку в строку - ToShortDateString(). ToString (m_UsCulture) 'так как она применяет культуру к дате? – Lloyd

ответ

4

DateTimePicker дать мне европейский формат

Это может быть справедливо, только если вы используете Text свойство. Я предлагаю вам использовать свойство SelectedDate, которое даст вам DateTime? вместо этого, и DateTime не имеет формат ... это зависит от вас, чтобы отформатировать его, как вы хотите.

Затем, чтобы преобразовать их в США короткий формат даты, вы должны использовать ToString и указать d (на короткий формат даты) и культуральную одновременно:

string str = m_dDate.Date.ToString("d", m_UsCulture); 

Ваш текущий код Пользуется DateTime.ToShortDateString() который будет использовать текущую культуру, и , затем, вызывая ToStringна итоговой строке, которая не заботится о культуре, которую вы ее передаете.

+0

OP использует дату: 'm_dDate.Date', хотя по какой-то причине конвертируется в строку с' ToShortDateString'. – Oded

+1

@Oded: Непонятно, что значит 'm_dDate' здесь, если быть честным.Но теперь мой ответ показывает, как преобразовать 'DateTime' в короткую строку даты в определенной культуре. –

+0

Комментирует оригинальную версию. И не был моим downvote, кстати. – Oded

4

ToShortDateString использует текущую культуру, поэтому вы не можете указать свою культуру в США с помощью этого метода (если вы не измените текущую культуру). Я хотел бы использовать вместо ToString и США конкретный шаблон короткий срок:

CultureInfo usCulture = CultureInfo.GetCultureInfo("en-us"); 
var stringRep = yourDate.ToString(
    usCulture.DateTimeFormat.ShortDatePattern, 
    usCulture); 
Смежные вопросы