Analisi di una data da una stringa

C#:
Analisi di una data da una stringa

Come fare:

Parsing Basic:

I metodi DateTime.Parse e DateTime.TryParse sono le opzioni principali per convertire una stringa in un DateTime. Ecco un esempio rapido:

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

if (DateTime.TryParse(dateString, out parsedDate))
{
    Console.WriteLine($"Parsing riuscito: {parsedDate}");
}
else
{
    Console.WriteLine("Parsing fallito.");
}
// Output: Parsing riuscito: 12/04/2023 00:00:00

Specificando una Cultura:

A volte, è necessario effettuare il parsing di una stringa di data che è in un formato specifico di una cultura. Questo può essere realizzato utilizzando la classe CultureInfo:

using System.Globalization;

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

Console.WriteLine(parsedDate);
// Output: 12/04/2023 00:00:00

Parsing Esatto con un Formato Specifico:

Per scenari in cui le date arrivano in un formato specifico che potrebbe non essere standard, DateTime.ParseExact è molto utile:

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

Console.WriteLine(parsedDate);
// Output: 12/04/2023 00:00:00

Usando NodaTime:

Per un parsing di date e orari ancora più robusto, considera l’utilizzo della popolare libreria di terze parti NodaTime. Offre un’ampia gamma di capacità di gestione di date/orari:

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("Parsing fallito.");
}

NodaTime offre un ampio supporto per i fusi orari, concetti di periodi e durate, e molti diversi sistemi di calendario, rendendolo una scelta potente per la manipolazione complessa di date e orari nelle applicazioni .NET.