Чтение дат правильно, независимо от формата - PullRequest
5 голосов
/ 08 августа 2011

Есть ли способ правильно прочитать дату и время независимо от формата даты (например, en-AU и en-US) в C # 4.0 или любой другой версии фреймворка?

Ниже приведены два разных формата даты (верхняя строкаАвстралийский формат, нижняя строка - американский формат):

Timestamp,Windows User,Computer,Product,Version,Id,User,Action 
5/04/2011 9:14:16 AM,terryg,KETTSAM51,powerfulSoftware,3.0,0,Garry Terry,Lock
5/1/2011 12:38:22 PM,weanern,KETTSAM51,powerfulSoftware,3.0,1,Admin,Lock

Мне нужно иметь возможность читать даты и обрабатывать их как даты в австралийском формате.

Ответы [ 3 ]

3 голосов
/ 08 августа 2011
string australiaCultureString = "en-AU";

CultureInfo australiaCulture = new CultureInfo(australiaCultureString);

Читать как австралийская культура:

DateTime time = DateTime.Parse(inputString, australiaCulture);

To представляет австралийскую дату и время при вызове ToString ()

string timeString = time.ToString(australiaCulture);
3 голосов
/ 08 августа 2011

Я не вижу, как вы могли бы сделать это, например, как этот синтаксический анализ:

08/01/2010

Это допустимая дата в форматах США и AU, поэтому всегда будет двусмысленность, если вы не дадите парсеру дополнительную подсказку.

0 голосов
/ 08 августа 2011

Нет, вы должны знать культуру при разборе строки даты.

Например,

 DateTime.Parse(dateString, new CultureInfo("en-US", false));

будет анализировать для вас дату в США, но не в Австралии (если толькоконечно, обе культуры используют один и тот же формат даты).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...