Metodo System.DateTime.TryParse

Questo articolo fornisce osservazioni supplementari alla documentazione di riferimento per questa API.

Il DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) metodo analizza una stringa che può contenere informazioni su data, ora e fuso orario. È simile al metodo , ad eccezione del DateTime.Parse(String, IFormatProvider, DateTimeStyles) fatto che il DateTime.TryParse(String, DateTime) metodo non genera un'eccezione se la conversione non riesce.

Questo metodo tenta di ignorare i dati non riconosciuti e analizzare completamente la stringa di input (s). Se s contiene un'ora ma nessuna data, il metodo sostituisce per impostazione predefinita la data corrente o, se styles include il NoCurrentDateDefault flag, sostituisce DateTime.Date.MinValue. Se s contiene una data ma nessuna ora, la mezzanotte 12:00 viene usata come ora predefinita. Se una data è presente ma il relativo componente year è costituito da solo due cifre, viene convertito in un anno nel provider calendario corrente del parametro in base al valore della Calendar.TwoDigitYearMax proprietà. Tutti gli spazi vuoti iniziali, interni o finali in s vengono ignorati. La data e l'ora possono essere racchiuse tra parentesi con una coppia di caratteri NUMERO iniziale e finale ('#', U+0023) e possono essere terminati con uno o più caratteri NULL (U+0000).

Formati validi specifici per gli elementi di data e ora, nonché per i nomi e i simboli usati in date e ore, sono definiti dal provider parametro , che può essere uno dei seguenti:

Se provider è null, verranno usate le impostazioni cultura correnti.

Se s è la rappresentazione di stringa di un giorno bisestile in un anno bisestile nel calendario corrente, il metodo analizza s correttamente. Se s è la rappresentazione di stringa di un giorno bisestile in un anno non bisestile nel calendario corrente di provider, l'operazione di analisi ha esito negativo e il metodo restituisce false.

Il styles parametro definisce l'interpretazione precisa della stringa analizzata e la modalità di gestione dell'operazione di analisi. Può essere uno o più membri dell'enumerazione DateTimeStyles , come descritto nella tabella seguente.

Membro DateTimeStyles Descrizione
AdjustToUniversal Analizza e, se necessario, lo converte s in formato UTC. Se s include una differenza di fuso orario o se s non contiene informazioni sul fuso orario ma styles include il DateTimeStyles.AssumeLocal flag , il metodo analizza la stringa, chiama ToUniversalTime per convertire il valore restituito DateTime in utc e imposta la Kind proprietà su DateTimeKind.Utc. Se s indica che rappresenta l'ora UTC o se s non contiene informazioni sul fuso orario ma styles include il DateTimeStyles.AssumeUniversal flag , il metodo analizza la stringa, non esegue alcuna conversione del fuso orario sul valore restituito DateTime e imposta la Kind proprietà su DateTimeKind.Utc. In tutti gli altri casi, il flag non ha alcun effetto.
AllowInnerWhite Anche se valido, questo valore viene ignorato. Gli spazi vuoti interni sono consentiti negli elementi di data e ora di s.
AllowLeadingWhite Anche se valido, questo valore viene ignorato. Gli spazi vuoti iniziali sono consentiti negli elementi di data e ora di s.
AllowTrailingWhite Anche se valido, questo valore viene ignorato. Gli spazi vuoti finali sono consentiti negli elementi di data e ora di s.
AllowWhiteSpaces Specifica che s può contenere spazi vuoti iniziali, interni e finali. Si tratta del comportamento predefinito. Non può essere sottoposto a override fornendo un valore di enumerazione più restrittivo DateTimeStyles , DateTimeStyles.Nonead esempio .
AssumeLocal Specifica che, se s non dispone di informazioni sul fuso orario, si presuppone che rappresenti un'ora locale. A meno che il DateTimeStyles.AdjustToUniversal flag non sia presente, la Kind proprietà del valore restituito è impostata DateTime su DateTimeKind.Local.
AssumeUniversal Specifica che, se s non dispone di informazioni sul fuso orario, si presuppone che rappresenti l'ora UTC. A meno che il DateTimeStyles.AdjustToUniversal flag non sia presente, il metodo converte il valore restituito DateTime dall'ora UTC all'ora locale e imposta la relativa Kind proprietà su DateTimeKind.Local.
None Anche se valido, questo valore viene ignorato.
RoundtripKind Per le stringhe che contengono informazioni sul fuso orario, tenta di impedire la conversione di una stringa di data e ora in un DateTime valore con la relativa Kind proprietà impostata su DateTimeKind.Local. In genere, tale stringa viene creata chiamando il DateTime.ToString(String) metodo usando gli identificatori di formato standard "o", "r" o "u".

Se s non contiene informazioni sul fuso orario, il DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) metodo restituisce un DateTime valore la cui Kind proprietà è DateTimeKind.Unspecified a meno che un styles flag non indichi diversamente. Se s include informazioni sul fuso orario o sulla differenza di fuso orario, il DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) metodo esegue una conversione dell'ora necessaria e restituisce uno dei seguenti elementi:

Questo comportamento può essere sottoposto a override usando il DateTimeStyles.RoundtripKind flag .

Analizzare le impostazioni cultura personalizzate

Se si analizza una stringa di data e ora generata per impostazioni cultura personalizzate, usare il TryParseExact metodo anziché il TryParse metodo per migliorare la probabilità che l'operazione di analisi abbia esito positivo. Una stringa di data e ora delle impostazioni cultura personalizzate può essere complessa e difficile da analizzare. Il TryParse metodo tenta di analizzare una stringa con diversi modelli di analisi impliciti, che potrebbero non riuscire. Al contrario, il TryParseExact metodo richiede di designare in modo esplicito uno o più modelli di analisi esatti che potrebbero avere esito positivo.

Per altre informazioni sulle impostazioni cultura personalizzate, vedere la System.Globalization.CultureAndRegionInfoBuilder classe .