Analiza składniowa daty z łańcucha znaków

C#:
Analiza składniowa daty z łańcucha znaków

Jak to zrobić:

Podstawowe przetwarzanie:

Metody DateTime.Parse i DateTime.TryParse to podstawowe opcje do konwertowania ciągu znaków na DateTime. Oto szybki przykład:

string dateString = "2023-04-12";
DateTime parsedDate;

if (DateTime.TryParse(dateString, out parsedDate))
{
    Console.WriteLine($"Pomyślnie przetworzono: {parsedDate}");
}
else
{
    Console.WriteLine("Nie udało się przetworzyć.");
}
// Wyjście: Pomyślnie przetworzono: 4/12/2023 12:00:00 AM

Określanie kultury:

Czasami konieczne jest przetworzenie ciągu daty, który jest w określonym formacie kulturowym. Można to osiągnąć za pomocą klasy CultureInfo:

using System.Globalization;

string dateString = "12 avril 2023";
var cultureInfo = new CultureInfo("fr-FR");
DateTime parsedDate = DateTime.Parse(dateString, cultureInfo);

Console.WriteLine(parsedDate);
// Wyjście: 4/12/2023 12:00:00 AM

Dokładne przetwarzanie z określonym formatem:

W scenariuszach, gdy daty są podane w określonym formacie, który może nie być standardowy, przydaje się DateTime.ParseExact:

string dateString = "Wednesday, 12 April 2023";
string format = "dddd, d MMMM yyyy";
DateTime parsedDate = DateTime.ParseExact(dateString, format, CultureInfo.InvariantCulture);

Console.WriteLine(parsedDate);
// Wyjście: 4/12/2023 12:00:00 AM

Korzystanie z NodaTime:

Do jeszcze bardziej zaawansowanego przetwarzania dat i czasów rozważ użycie popularnej biblioteki stron trzecich NodaTime. Zapewnia ona szerszy zakres możliwości obsługi dat/czasu:

using NodaTime;
using NodaTime.Text;

var pattern = LocalDatePattern.CreateWithInvariantCulture("yyyy-MM-dd");
var parseResult = pattern.Parse("2023-04-12");

if(parseResult.Success)
{
    LocalDate localDate = parseResult.Value;
    Console.WriteLine(localDate); // 2023-04-12
}
else
{
    Console.WriteLine("Nie udało się przetworzyć.");
}

NodaTime oferuje obszerną pomoc w zakresie stref czasowych, koncepcji okresów i trwania, oraz wielu różnych systemów kalendarzowych, co czyni go potężnym wyborem dla złożonej manipulacji datą i czasem w aplikacjach .NET.