Метод DateTime.ParseExact
Метод ParseExact принимает текст,
строку формата и CultureInfo.
В шаблоне используйте дефис, а не
"/" - слэш подставляет
разделитель культуры. Флаги задают через
DateTimeStyles.
Мягкий вариант -
TryParseExact.
Синтаксис
using System.Globalization;
DateTime dt = DateTime.ParseExact(
text, "yyyy-MM-dd", CultureInfo.InvariantCulture);
Пример
Давайте разберём "2020-01-02"
по "yyyy-MM-dd":
using System;
using System.Globalization;
class Program
{
static void Main()
{
DateTime res = DateTime.ParseExact(
"2020-01-02",
"yyyy-MM-dd",
CultureInfo.InvariantCulture);
Console.WriteLine(res.Day);
}
}
Результат выполнения кода:
2
Пример
Давайте укажем чужой шаблон и поймаем
FormatException:
using System;
using System.Globalization;
class Program
{
static void Main()
{
try
{
DateTime.ParseExact(
"2020-01-02",
"dd.MM.yyyy",
CultureInfo.InvariantCulture);
}
catch (FormatException)
{
Console.WriteLine("fail");
}
}
}
Результат выполнения кода:
"fail"
Пример
Давайте разберём время по
"HH:mm:ss":
using System;
using System.Globalization;
class Program
{
static void Main()
{
var dt = new DateTime(2020, 1, 2, 3, 4, 5);
string text = dt.ToString("HH:mm:ss", CultureInfo.InvariantCulture);
DateTime res = DateTime.ParseExact(
text, "HH:mm:ss", CultureInfo.InvariantCulture);
Console.WriteLine(res.Second);
}
}
Результат выполнения кода:
5
Смотрите также
-
TryParseExact,
без исключения -
Parse,
свободный формат -
ToString,
собрать строку для шаблона -
DateTimeStyles,
UTC и пробелы