У меня есть следующее:
PMRCutoffDate.Value = ReportCalc.Cutoff_Date.ToString("MM/dd/yyyy");
PMRDate.Value = DateTime.Now.ToString("MM/dd/yyyy");
я хочу, чтобы даты обнаружились как: 05.03.2010, не 05.03.2010 или 05.03.2010 или 05.03.2010
Однако моя программа ВСЕ ЕЩЕ показывает дату неправильно (3/10/2010).
Какие-либо идеи обо что случилось?
В VS 2008 у меня есть следующий код с результатом, который вы ищете. Не могли бы вы опубликовать дополнительную информацию? Код:
Console.WriteLine(DateTime.Now.ToString("MM/dd/yyyy"));
Вывод:
03/10/2010
Проверьте в апплете «Язык и региональные стандарты» панели управления, был ли изменен формат даты. Вы должны иметь возможность изолировать себя от этих переопределений или необычных свойств языка и региональных параметров, используя свойство CultureInfo.InvariantCulture.DateTimeFormat в перегрузке DateTime.ToString ().
Приведенные выше ответы должны помочь вам уже, но если нет, и у вас все еще есть проблемы, вы можете создать следующий метод расширения для DateTime и просто принудительно использовать нужный вам формат независимо от настроек языка и культуры:
public static class StringExtension
{
static public string ToStringFormatted(this DateTime dt)
{
return string.Format("{0:00}/{1:00}/{2:0000}", dt.Month, dt.Day, dt.Year);
}
// if the culture info change does fix your issue do:
static public string ToStringFormatted2(this DateTime dt)
{
return dt.ToString("MM/dd/yyyy");
}
}
// useage:
string date = DateTime.Now.ToStringFormatted();
// output: 03/10/2010
Я предпочитаю методы расширения для форматирования таких вещей, как даты, потому что у кого-то всегда есть яркая идея изменить формат в какой-то момент, и мне нужно только изменить расширение, и все мое приложение теперь отражает новый формат.
В соответствии с этой статьей вы можете 0 вставить даты с помощью String.format или DateTime.toString таким образом:
String.Format("{0:MM/dd/yyyy}", dt);