Мне нужно преобразовать строку в формате mm/dd/yyyy в переменную datetime, но она должна оставаться в формате mm/dd/yyyy.
string strDate = DateTime.Now.ToString("MM/dd/yyyy");
Пожалуйста, помогите.
Мне нужно преобразовать строку в формате mm/dd/yyyy в переменную datetime, но она должна оставаться в формате mm/dd/yyyy.
string strDate = DateTime.Now.ToString("MM/dd/yyyy");
Пожалуйста, помогите.
Вы ищете метод DateTime.Parse()
(Статья MSDN)
Итак, вы можете сделать:
var dateTime = DateTime.Parse("01/01/2001");
Что даст вам DateTime
типизированный объект.
Если вам нужно указать формат даты, который вы хотите использовать, вы должны использовать DateTime.ParseExact
(Статья MSDN)
Что вы будете использовать в такой ситуации (Где вы используете формат даты в британском стиле):
string[] formats= { "dd/MM/yyyy" }
var dateTime = DateTime.ParseExact("01/01/2001", formats, new CultureInfo("en-US"), DateTimeStyles.None);
Для месячной части вам нужен заглавный M
.
string strDate = DateTime.Now.ToString("MM/dd/yyyy");
Нижний регистр M
предназначен для вывода (и разбора) в минуту (например, h:mm
).
например. строка времени полной даты может выглядеть так:
string strDate = DateTime.Now.ToString("MM/dd/yyyy h:mm");
Обратите внимание на разницу в верхнем и нижнем регистре mM
.
Также, если вы всегда будете иметь дело с одной и той же строкой формата даты и времени, вы можете сделать это проще, написав их как методы расширения С#.
public static class DateTimeMyFormatExtensions
{
public static string ToMyFormatString(this DateTime dt)
{
return dt.ToString("MM/dd/yyyy");
}
}
public static class StringMyDateTimeFormatExtension
{
public static DateTime ParseMyFormatDateTime(this string s)
{
var culture = System.Globalization.CultureInfo.CurrentCulture;
return DateTime.ParseExact(s, "MM/dd/yyyy", culture);
}
}
ПРИМЕР: Перевод между DateTime/string
DateTime now = DateTime.Now;
string strNow = now.ToMyFormatString();
DateTime nowAgain = strNow.ParseMyFormatDateTime();
Обратите внимание, что нет способа сохранить пользовательскую информацию формата DateTime
для использования в качестве default
, как в .NET. Большинство форматирование строк зависит от установленной в данный момент культуры, т.е.
System.Globalization.CultureInfo.CurrentCulture.
Единственный простой способ, который вы можете сделать, - это запустить собственный метод расширения.
Кроме того, другим простым способом было бы использовать другой класс "контейнер" или "обертка" для вашего DateTime, то есть определенный специальный класс с explicit operator
, который автоматически преобразуется в и из DateTime/string. Но это опасная территория.
Мне понравилось это
var datetoEnter= DateTime.ParseExact(createdDate, "dd/mm/yyyy", CultureInfo.InvariantCulture);
Вы также можете изменить формат, сделав это
string fecha = DateTime.Now.ToString(format:"dd-MM-yyyy");
//это изменит "/"
для "-"
Для меня работает следующее.
string strToday = DateTime.Today.ToString("MM/dd/yyyy");
Решение
DateTime.Now.ToString("MM/dd/yyyy", CultureInfo.InvariantCulture)