DateTime
не хранит даты в «формате» - используется внутреннее представление.Вам нужно разобрать переданную в строке, чтобы получить правильное значение для DateTime
, а когда вы хотите отобразить , вы можете затем отформатировать его для любого отображения.
Лучше всего использовать TryParseExact
, указав точную строку формата.Вам необходимо использовать пользовательские строки формата даты и времени .
Использовать перегрузку, которая принимает string[]
строк формата - по одной для каждого формата даты.
Что касается части EST
- фреймворк не поддерживает именованные часовые пояса.Возможно, вы захотите написать оболочку, которая преобразует именованные часовые пояса в их эквивалентную, но разбираемую форму.
Не проверено (на примере MSDN):
string[] formats= {"ddd, dd/MMM/yyyy hh:mm:ss K",
"ddd, dd MMMM yyyy hh:mm:ss EST"};
DateTime dateValue;
foreach (string dateString in dateStrings)
{
if (DateTime.TryParseExact(dateString, formats,
new CultureInfo("en-US"),
DateTimeStyles.None,
out dateValue))
Console.WriteLine("Converted '{0}' to {1}.", dateString, dateValue);
else
Console.WriteLine("Unable to convert '{0}' to a date.", dateString);
}