DateTime.Parse Американский формат даты C # - PullRequest
21 голосов
/ 09 мая 2011

Вероятно, простой вопрос -

Я читаю данные из ряда файлов.

Моя проблема в том, что когда я читаю дату из американского файла, я анализирую ее следующим образом:

DateSold = DateTime.Parse(t.Date)

Это анализирует строку t.Date в формате датыоднако она форматирует американскую дату в европейскую дату, например,

Если в файле указана дата 03.01.2011, она читается как 3 января 2011 года, когда она должна быть 1-йза март 2011 года.

Есть ли способ сделать это так, чтобы он форматировал европейскую дату?

Ответы [ 5 ]

32 голосов
/ 09 мая 2011
var dt = DateTime.ParseExact(t.Date, "MM/dd/yyyy", CultureInfo.InvariantCulture);

Формат DateTime сам по себе не имеет форматирования, формат актуален только при преобразовании его в строку или из строки.

Чтобы просмотреть дату в американском формате, передайте форматметод ToString

string americanFormat = dt.ToString("MM/dd/yyyy");
17 голосов
/ 09 мая 2011

Если вы анализируете дату из файла, который является файлом, специально отформатированным в США, просто передайте информацию о культуре США в функцию анализа следующим образом:

var usCulture = "en-US";
var dateValue = DateTime.Parse(dateString, new CultureInfo(usCulture, false));

Таким образом, вы можете просто поменятьСтрока культуры в разных регионах, необходимых для разбора.Кроме того, вам больше не нужно исследовать конкретные нюансы формата даты и времени для каждой культуры, поскольку .Net позаботится об этом за вас, как и планировалось.

7 голосов
/ 09 мая 2011

Используйте DateTime.ParseExact или DateTime.TryParseExact при разборе и укажите форматную строку при форматировании с помощью ToString.

Обратите внимание, что неттакая вещь, как «американская дата» после того, как она была проанализирована.У значения DateTime есть нет концепции форматирования.

Звучит так, что вас на самом деле интересует не часть Parse, а часть форматирования, например,

string formatted = dt.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);

... но я бы порекомендовал вам явно контролировать форматирование и .

Если у вас разные форматы файлов, вам нужно будет указать строки другого форматакогда вы читаете каждый файл.Как вы тогда форматируете данные, это отдельное решение.

1 голос
/ 09 мая 2011

Если вы знаете формат заранее, вы можете использовать DateTime.ParseExact , используя американский формат в качестве строки формата.

0 голосов
/ 14 сентября 2012
string formatteddate=DateTime.Now.ToString("d") // output: 11/8/2012    
string formatteddate=DateTime.Now.ToString("D") // output: Monday, November 08, 2012    
string formatteddate=DateTime.Now.ToString("f") // output: Monday, November 08, 2012 3:39 PM    
string formatteddate=DateTime.Now.ToString("g") // output: Monday, November 08, 2012 3:39:46 PM    
string formatteddate=DateTime.Now.ToString("d") // output: 11/8/2012 3:39 PM

Более подробный формат даты и времени в asp.net указан здесь.

http://dateformat.blogspot.in/2012/09/date-time-format-in-c-aspnet.html

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