Ricerca…


ParseExact

var dateString = "2015-11-24";

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

24/11/2015 12:00:00

Si noti che il passaggio di CultureInfo.CurrentCulture come terzo parametro è identico al passaggio di null . Oppure, puoi passare una cultura specifica.

Formato stringhe

La stringa di input può essere in qualsiasi formato che corrisponda alla stringa di formato

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

24/11/2015 12:00:00

Tutti i caratteri che non sono specificatori di formato sono trattati come valori letterali

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

24/11/2015 12:00:00

Il caso vale per gli specificatori di formato

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

11/24/2015 11:01:30 AM

Si noti che i valori del mese e dei minuti sono stati analizzati nelle destinazioni sbagliate.

Le stringhe di formato a carattere singolo devono essere uno dei formati standard

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);

eccezioni

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

Gestire più formati possibili

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);

Gestire le differenze culturali

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);

Giorno: 11; Mese: 10

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

Giorno: 10; Mese: 11

TryParse

Questo metodo accetta una stringa come input, tenta di analizzarla in un DateTime e restituisce un risultato booleano che indica il successo o l'insuccesso. Se la chiamata ha esito positivo, la variabile viene trasmessa quando il parametro out viene popolato con il risultato analizzato.

Se l'analisi fallisce, la variabile passa come il parametro out è impostato sul valore predefinito, DateTime.MinValue .

TryParse (string, out DateTime)

DateTime parsedValue;

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

Questo metodo tenta di analizzare la stringa di input in base alle impostazioni internazionali del sistema e ai formati noti come ISO 8601 e altri formati comuni.

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

Poiché questo metodo non accetta informazioni sulla cultura, utilizza le impostazioni locali del sistema. Questo può portare a risultati inaspettati.

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

falso

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

falso

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

Vero

Nota che se sei negli Stati Uniti, potresti essere sorpreso che il risultato analizzato sia il 10 novembre, non l'11 ottobre.

TryParse (string, IFormatProvider, DateTimeStyles, out DateTime)

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?");
}

A differenza del metodo fratello, questo overload consente di specificare una cultura e uno o più stili specifici. Il passaggio null per il parametro IFormatProvider utilizza la cultura di sistema.

eccezioni

Si noti che è possibile che questo metodo generi un'eccezione in determinate condizioni. Questi si riferiscono ai parametri introdotti per questo overload: IFormatProvider e DateTimeStyles .

  • NotSupportedException : IFormatProvider specifica una lingua neutra
  • ArgumentException : DateTimeStyles non è un'opzione valida o contiene flag incompatibili come AssumeLocal e AssumeUniversal .

TryParseExact

Questo metodo si comporta come una combinazione di TryParse e ParseExact : consente di specificare il / i formato / i personalizzato e restituisce un risultato booleano che indica il successo o l'insuccesso anziché lanciare un'eccezione se l'analisi fallisce.

TryParseExact (stringa, stringa, IFormatProvider, DateTimeStyles, out DateTime)

Questo overload tenta di analizzare la stringa di input su un formato specifico. La stringa di input deve corrispondere a quel formato per poter essere analizzata.

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

TryParseExact (string, string [], IFormatProvider, DateTimeStyles, out DateTime)

Questo overload tenta di analizzare la stringa di input su una serie di formati. La stringa di input deve corrispondere ad almeno un formato per poter essere analizzata.

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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow