2012-02-04 3 views
0

Мне нужно указать дату в формате MM/DD/YYYY. Из элемента управления выбора даты. Я пытаюсь назначить его переменной DateTime. Прежде чем писать в файл, я назначаю его строке. Я вижу, что значение, хранящееся в переменной String, находится в формате DD/MM/YYYY.Сохранение формата MM/DD/YYYY в строке

Ниже оператор присваивания

DateTime startTime, endTime; 
string startTimeDate = ""; 
startTime = Convert.ToDateTime(dpStartTime.Value.ToString("MM/dd/yyyy HH:mm")); 
endTime = Convert.ToDateTime(dpEndTime.Value.ToString("MM/dd/yyyy HH:mm")); 
startTimeDate = startTime.ToString("MM/dd/yyyy HH:mm"); 
startTimeDate = startTimeDate.Replace('-', '/'); 

Наблюдаю startTimeDate хранится в формате ДД/ММ/YYYY только. startTime хранится только в формате MM/DD/YYYY. Пожалуйста, дайте мне знать, если есть какой-либо другой подход к правильному назначению/преобразованию значений даты.

Заранее спасибо

ответ

5

Edit:

Вы теряете первоначальную дату в вашем Convert.DateTime() преобразования, вы должны применить формат строки здесь, а также, например, используя DateTime.ParseExact:

startTime = DateTime.ParseExact(dpStartTime.Value.ToString("MM/dd/yyyy HH:mm"), 
           "MM/dd/yyyy HH:mm", 
           CultureInfo.InvariantCulture); 
+0

Как я уже сказал, startTimeDate возвращается как DD/MM/YYYY, что является проблемой для меня. Пожалуйста, предложите. – Siva

+0

Большое спасибо – Siva

+0

I get Error - имя «CultureInfo» не существует в текущем контексте. Я удалил mscorlib из ссылок, и я получил еще одну ошибку. – Siva

0

Вы преобразования DateTime в строку, то вы преобразуя его снова DateTime используя Convert класс. Вы не сохраняете формат здесь, потому что DateTime является агностиком формата. И по умолчанию преобразование ToString (используемое отладчиком) находится в вашей причине MM/DD/YYYY.

+0

Можете ли вы предложить мне альтернативную работу. Я пытаюсь выяснить, что такое исправление кода для этого случая. – Siva

+0

'startTimeDate = startTime.ToString (" MM/dd/yyyy HH: mm ")' В этом нет ничего плохого – Bartosz

0

Я обычно использую String.Format, бывший

String.Format("{0:d/M/yyyy HH:mm:ss}", dpStartTime.Value); 

Для форматирования даты как строки.

2

Вместо того, чтобы использовать Convert.ToDateTime(), попробуйте использовать DateTime.ParseExact(string s, string format, IFormatProvider provider), когда вы можете обеспечить формат даты и времени, и хотите игнорировать системные настройки. Ссылка MSDN для метода DateTime.ParseExact() может быть найдена here

Смежные вопросы