Поиск…


ParseExact

var dateString = "2015-11-24";

var date = DateTime.ParseExact(dateString, "yyyy-MM-dd", null);
Console.WriteLine(date);

24.11.2013 12:00:00

Обратите внимание, что передача CultureInfo.CurrentCulture в качестве третьего параметра идентична передаче null . Или вы можете передать определенную культуру.

Форматировать строки

Строка ввода может быть в любом формате, соответствующем строке формата

var date = DateTime.ParseExact("24|201511", "dd|yyyyMM", null);
Console.WriteLine(date);

24.11.2013 12:00:00

Любые символы, не являющиеся спецификаторами формата, рассматриваются как литералы

var date = DateTime.ParseExact("2015|11|24", "yyyy|MM|dd", null);
Console.WriteLine(date);

24.11.2013 12:00:00

Вопросы для спецификаторов формата

var date = DateTime.ParseExact("2015-01-24 11:11:30", "yyyy-mm-dd hh:MM:ss", null);
Console.WriteLine(date);

24.11.2011 11:01:30

Обратите внимание, что значения месяца и минуты были проанализированы в неправильные адресаты.

Строки с одним символьным символом должны быть одним из стандартных форматов

var date = DateTime.ParseExact("11/24/2015", "d", new CultureInfo("en-US"));
var date = DateTime.ParseExact("2015-11-24T10:15:45", "s", null);
var date = DateTime.ParseExact("2015-11-24 10:15:45Z", "u", null);

Исключения

ArgumentNullException

var date = DateTime.ParseExact(null, "yyyy-MM-dd", null);
var date = DateTime.ParseExact("2015-11-24", null, null);

FormatException

var date = DateTime.ParseExact("", "yyyy-MM-dd", null);
var date = DateTime.ParseExact("2015-11-24", "", null);
var date = DateTime.ParseExact("2015-0C-24", "yyyy-MM-dd", null);
var date = DateTime.ParseExact("2015-11-24", "yyyy-QQ-dd", null);

// Single-character format strings must be one of the standard formats
var date = DateTime.ParseExact("2015-11-24", "q", null);

// Format strings must match the input exactly* (see next section)
var date = DateTime.ParseExact("2015-11-24", "d", null); // Expects 11/24/2015 or 24/11/2015 for most cultures

Обработка нескольких возможных форматов

var date = DateTime.ParseExact("2015-11-24T10:15:45", 
  new [] { "s", "t", "u", "yyyy-MM-dd" }, // Will succeed as long as input matches one of these
  CultureInfo.CurrentCulture, DateTimeStyles.None);

Обработка различий в культуре

var dateString = "10/11/2015";
var date = DateTime.ParseExact(dateString, "d", new CultureInfo("en-US"));
Console.WriteLine("Day: {0}; Month: {1}", date.Day, date.Month);

День: 11; Месяц: 10

date = DateTime.ParseExact(dateString, "d", new CultureInfo("en-GB"));
Console.WriteLine("Day: {0}; Month: {1}", date.Day, date.Month);

День: 10; Месяц: 11

TryParse

Этот метод принимает строку как входную, пытается проанализировать ее в DateTime и возвращает логический результат, указывающий на успех или неудачу. Если вызов преуспевает, переменная, переданная как параметр out заполняется анализируемым результатом.

Если синтаксический анализ не выполняется, переменная, переданная как параметр out устанавливается на значение по умолчанию DateTime.MinValue .

TryParse (строка, вне DateTime)

DateTime parsedValue;

if (DateTime.TryParse("monkey", out parsedValue))
{
   Console.WriteLine("Apparently, 'monkey' is a date/time value. Who knew?");
}

Этот метод пытается проанализировать входную строку на основе региональных настроек системы и известных форматов, таких как ISO 8601 и других распространенных форматов.

DateTime.TryParse("11/24/2015 14:28:42", out parsedValue); // true
DateTime.TryParse("2015-11-24 14:28:42", out parsedValue); // true
DateTime.TryParse("2015-11-24T14:28:42", out parsedValue); // true
DateTime.TryParse("Sat, 24 Nov 2015 14:28:42", out parsedValue); // true

Поскольку этот метод не принимает информацию о культуре, он использует языковой стандарт системы. Это может привести к неожиданным результатам.

// System set to en-US culture
bool result = DateTime.TryParse("24/11/2015", out parsedValue);
Console.WriteLine(result);

Ложь

// System set to en-GB culture
bool result = DateTime.TryParse("11/24/2015", out parsedValue);
Console.WriteLine(result);

Ложь

// System set to en-GB culture
bool result = DateTime.TryParse("10/11/2015", out parsedValue);
Console.WriteLine(result);

Правда

Обратите внимание: если вы находитесь в США, вы можете быть удивлены, что результат анализа будет 10 ноября, а не 11 октября.

TryParse (строка, IFormatProvider, DateTimeStyles, outTimeTime)

if (DateTime.TryParse(" monkey ", new CultureInfo("en-GB"),
    DateTimeStyles.AllowLeadingWhite | DateTimeStyles.AllowTrailingWhite, out parsedValue)
{
    Console.WriteLine("Apparently, ' monkey ' is a date/time value. Who knew?");
}

В отличие от метода sibling, эта перегрузка позволяет указать определенную культуру и стиль (ы). Передача null для параметра IFormatProvider использует культуру системы.

Исключения

Обратите внимание, что этот метод может генерировать исключение при определенных условиях. Они относятся к параметрам, введенным для этой перегрузки: IFormatProvider и DateTimeStyles .

  • NotSupportedException : IFormatProvider указывает нейтральную культуру
  • ArgumentException : DateTimeStyles не является допустимым параметром или содержит несовместимые флаги, такие как AssumeLocal и AssumeUniversal .

TryParseExact

Этот метод ведет себя как комбинация TryParse и ParseExact : он позволяет ParseExact настраиваемый формат (ы) и возвращает логический результат, указывающий на успех или неудачу, а не на выброс исключения, если синтаксический анализ не выполняется.

TryParseExact (строка, строка, IFormatProvider, DateTimeStyles, out DateTime)

Эта перегрузка пытается проанализировать входную строку в определенном формате. Строка ввода должна соответствовать этому формату для анализа.

DateTime.TryParseExact("11242015", "MMddyyyy", null, DateTimeStyles.None, out parsedValue); // true

TryParseExact (строка, строка [], IFormatProvider, DateTimeStyles, outTimeTime)

Эта перегрузка пытается разобрать входную строку на массив форматов. Строка ввода должна соответствовать хотя бы одному формату для анализа.

DateTime.TryParseExact("11242015", new [] { "yyyy-MM-dd", "MMddyyyy" }, null, DateTimeStyles.None, out parsedValue); // true


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow