форматировать дату в c # - PullRequest
       11

форматировать дату в c #

17 голосов
/ 01 февраля 2009

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

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

Как я могу сделать это в C #?

Ответы [ 7 ]

44 голосов
/ 01 февраля 2009

Это почти то же самое, просто используйте метод 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"
8 голосов
/ 01 февраля 2009
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 для компонента времени дня

2 голосов
/ 01 февраля 2009

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

DateTime.Now.ToString() 

или

DateTime.Now.ToString(CultureInfo.CurrentCulture) 

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

2 голосов
/ 01 февраля 2009

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

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

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

или

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

для длинной нотации типа "воскресенье, 1 февраля 2009 г.".

Или взгляните на MSDN для возможностей .ToString ("???");

2 голосов
/ 01 февраля 2009

Попробуйте это:

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
0 голосов
/ 06 июня 2016

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

 DateTime.ParseExact(txt.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture).ToString("yyyy/MM/dd"));
0 голосов
/ 06 ноября 2015

Я столкнулся с той же проблемой. Мне нужно было добавить ссылку вверху класса и изменить 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" = франкоязычная Канада и т.д ...

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