Подтвердить что ты не робот

Формат даты в С#

Как я могу отформатировать дату как dd/mm/yyyy или mm/dd/yy?

Как в VB format("dd/mm/yy",now)

Как это сделать на С#?

4b9b3361

Ответ 1

Это почти то же самое, просто используйте метод DateTime.ToString(), например:

DateTime.Now.ToString("dd/MM/yy");

Или:

DateTime dt = GetDate(); // GetDate() returns some date
dt.ToString("dd/MM/yy");

Кроме того, вам может потребоваться использовать один из предопределенных форматов даты и времени, например:

DateTime.Now.ToString("g");
// returns "02/01/2009 9:07 PM" for en-US
// or "01.02.2009 21:07" for de-CH 

Это гарантирует, что формат будет правильным, независимо от текущих настроек локали.

Для получения дополнительной информации просмотрите следующие страницы MSDN.


Дополнительная дополнительная информация:

Если вы хотите отображать дату в определенной языковой версии/культуре, то существует перегрузка метода ToString(), который принимает значение IFormatProvider:

DateTime dt = GetDate();
dt.ToString("g", new CultureInfo("en-US")); // returns "5/26/2009 10:39 PM"
dt.ToString("g", new CultureInfo("de-CH")); // returns "26.05.2009 22:39"

Или, альтернативно, вы можете установить CultureInfo текущего потока до форматирования даты:

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
dt.ToString("g"); // returns "5/26/2009 10:39 PM"

Thread.CurrentThread.CurrentCulture = new CultureInfo("de-CH");
dt.ToString("g"); // returns "26.05.2009 22:39"

Ответ 2

string.Format("{0:dd/MM/yyyy}", DateTime.Now)

Посмотрите "строки формата" в MSDN, чтобы просмотреть все параметры форматирования.

Используйте yy, yyyy, M, MM, MMM, MMMM, d, dd, ddd, dddd для компонента даты

Используйте h, hh, h, hh, M, MM, s, ss для компонента time-of-day

Ответ 3

Попробуйте следующее:

String.Format("{0:MM/dd/yyyy}", DateTime.Now); // 01/31/2009
String.Format("{0:dd/MM/yyyy}", DateTime.Now); // 31/01/2009
String.Format("{dd/MM/yyyy}", DateTime.Now); // 31/01/2009

Ответ 4

В вы также можете написать

DateTime aDate = new DateTime(); 
string s = aDate.ToShortDateString();

для короткой записи

или

DateTime aDate = new DateTime(); 
string s = aDate.ToLongDateString();

для длинной записи, например "Sunday, Feb.1, 2009".

Или посмотрите MSDN на возможности .ToString( "???" );

Ответ 5

Еще лучше, используйте только

DateTime.Now.ToString() 

или

DateTime.Now.ToString(CultureInfo.CurrentCulture) 

использовать формат, который пользователь предпочитает.

Ответ 6

Я столкнулся с той же проблемой. Мне нужно было добавить ссылку вверху класса и изменить CultureInfo текущего потока, который выполняется.

using System.Threading;

string cultureName = "fr-CA";
Thread.CurrentThread.CurrentCulture = new CultureInfo(cultureName);

DateTime theDate = new DateTime(2015, 11, 06);
theDate.ToString("g");
Console.WriteLine(theDate);

Все, что вам нужно сделать, это изменить название культуры, например:    "en-US" = Соединенные Штаты    "fr-FR" = франкоязычная Франция    "fr-CA" = франкоязычная Канада   и т.д...

Ответ 7

Я думаю, что это просто, потому что вы можете конвертировать в любой формат без каких-либо путаниц.

 DateTime.ParseExact(txt.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture).ToString("yyyy/MM/dd"));