Ответ 1
Я просто хотел бы указать что-то в этих ответах. В строке формата даты/времени '/' будет заменен на любой разделитель дат пользователя, а ':' будет заменен любым временным разделителем времени. То есть, если я определил свой разделитель даты как '.' (в апплете панели управления "Язык и язык", "intl.cpl" ), а мой разделитель времени - "?" (просто притворись, что я такой сумасшедший), затем
DateTime.Now.ToString("MM/dd/yyyy h:mm tt")
вернет
01.05.2009 6?01 PM
В большинстве случаев это то, что вы хотите, потому что вы хотите соблюдать пользовательские настройки. Если, однако, вам требуется, формат будет чем-то конкретным (скажем, если он будет разбираться с кем-то другим по кабелю), вам нужно избежать этих специальных символов:
DateTime.Now.ToString("MM\\/dd\\/yyyy h\\:mm tt")
или
DateTime.Now.ToString(@"MM\/dd\/yyyy h\:mm tt")
который теперь вернет
01/05/2009 6:01 PM
ИЗМЕНИТЬ
И снова, если вы действительно хотите соблюдать пользовательские настройки, вы должны использовать одну из стандартных строк формата даты/времени, чтобы вы уважали не только пользовательские варианты разделителей, но также общий формат даты и/или времени.
DateTime.Now.ToShortDateString()
DateTime.Now.ToString("d")
Оба возвратили бы "1/5/2009", используя стандартные опции США или "05/01/2009", используя стандартные варианты Великобритании, например.
DateTime.Now.ToLongDateString()
DateTime.Now.ToString("D")
Оба вернутся "в понедельник, 5 января 2009 года" в США, или "05 января 2009 года" в Великобритании.
DateTime.Now.ToShortTimeString()
DateTime.Now.ToString("t");
"6:01 PM" в США, "18:01" в Великобритании.
DateTime.Now.ToLongTimeString()
DateTime.Now.ToString("T");
"6:01:04 PM" в США, "18:01:04" в Великобритании.
DateTime.Now.ToString()
DateTime.Now.ToString("G");
"1/5/2009 6:01:04 PM" в США, "05/01/2009 18:01:04" в Великобритании.
Доступны многие другие варианты. См. Docs для стандартных строк формата даты и времени и пользовательские строки формата даты и времени.