.NET Framework
DateTime parsing
Zoeken…
ParseExact
var dateString = "2015-11-24";
var date = DateTime.ParseExact(dateString, "yyyy-MM-dd", null);
Console.WriteLine(date);
11/24/2015 12:00:00
Merk op dat het doorgeven van CultureInfo.CurrentCulture
als de derde parameter identiek is aan het doorgeven van null
. Of u kunt een specifieke cultuur doorgeven.
Tekenreeksen opmaken
Invoerstring kan in elk formaat zijn dat overeenkomt met de formaatstring
var date = DateTime.ParseExact("24|201511", "dd|yyyyMM", null);
Console.WriteLine(date);
11/24/2015 12:00:00
Alle tekens die geen opmaakspecificaties zijn, worden als letterlijke tekens behandeld
var date = DateTime.ParseExact("2015|11|24", "yyyy|MM|dd", null);
Console.WriteLine(date);
11/24/2015 12:00:00
Geval is belangrijk voor opmaakspecificaties
var date = DateTime.ParseExact("2015-01-24 11:11:30", "yyyy-mm-dd hh:MM:ss", null);
Console.WriteLine(date);
24-11-2015 11:01:30 uur
Merk op dat de maand- en minuutwaarden in de verkeerde bestemmingen zijn geparseerd.
Opmaakreeksen met één teken moeten een van de standaardindelingen zijn
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);
Uitzonderingen
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
Meerdere mogelijke formaten verwerken
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);
Omgaan met cultuurverschillen
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);
Dag: 11; Maand: 10
date = DateTime.ParseExact(dateString, "d", new CultureInfo("en-GB"));
Console.WriteLine("Day: {0}; Month: {1}", date.Day, date.Month);
Dag: 10; Maand: 11
TryParse
Deze methode accepteert een tekenreeks als invoer, probeert deze te parseren in een DateTime
en retourneert een Booleaans resultaat dat aangeeft dat de code is geslaagd of mislukt. Als de aanroep slaagt, wordt de variabele die wordt doorgegeven als de parameter out
ingevuld met het geparseerde resultaat.
Als het ontleden mislukt, wordt de variabele die wordt doorgegeven als de parameter out
ingesteld op de standaardwaarde DateTime.MinValue
.
TryParse (string, uit DateTime)
DateTime parsedValue;
if (DateTime.TryParse("monkey", out parsedValue))
{
Console.WriteLine("Apparently, 'monkey' is a date/time value. Who knew?");
}
Deze methode probeert de invoertekenreeks te parseren op basis van de regionale systeeminstellingen en bekende indelingen zoals ISO 8601 en andere veelgebruikte indelingen.
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
Omdat deze methode geen cultuurinfo accepteert, wordt de landinstelling van het systeem gebruikt. Dit kan leiden tot onverwachte resultaten.
// System set to en-US culture
bool result = DateTime.TryParse("24/11/2015", out parsedValue);
Console.WriteLine(result);
vals
// System set to en-GB culture
bool result = DateTime.TryParse("11/24/2015", out parsedValue);
Console.WriteLine(result);
vals
// System set to en-GB culture
bool result = DateTime.TryParse("10/11/2015", out parsedValue);
Console.WriteLine(result);
waar
Houd er rekening mee dat als u in de VS bent, u misschien verrast bent dat het geparseerde resultaat 10 november is en niet 11 oktober.
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?");
}
In tegenstelling tot de methode voor broers en zussen, kan met deze overbelasting een specifieke cultuur en stijl (en) worden gespecificeerd. Het doorgeven van null
voor de parameter IFormatProvider
maakt gebruik van de systeemcultuur.
Uitzonderingen
Merk op dat het onder deze omstandigheden mogelijk is om een uitzondering te maken. Deze hebben betrekking op de parameters die zijn geïntroduceerd voor deze overbelasting: IFormatProvider
en DateTimeStyles
.
-
NotSupportedException
:IFormatProvider
geeft een neutrale cultuur aan -
ArgumentException
:DateTimeStyles
is geen geldige optie of bevat incompatibele vlaggen zoalsAssumeLocal
enAssumeUniversal
.
TryParseExact
Deze methode gedraagt zich als een combinatie van TryParse
en ParseExact
: hiermee kunnen aangepaste indelingen worden opgegeven en wordt een Booleaans resultaat geretourneerd dat aangeeft dat de fout is geslaagd of mislukt, in plaats van een uitzondering te genereren.
TryParseExact (string, string, IFormatProvider, DateTimeStyles, out DateTime)
Deze overbelasting probeert de invoertekenreeks te parseren met een specifiek formaat. De invoertekenreeks moet overeenkomen met dat formaat om te kunnen worden ontleed.
DateTime.TryParseExact("11242015", "MMddyyyy", null, DateTimeStyles.None, out parsedValue); // true
TryParseExact (string, string [], IFormatProvider, DateTimeStyles, out DateTime)
Deze overbelasting probeert de invoerreeks te parseren op basis van een reeks indelingen. De invoertekenreeks moet overeenkomen met ten minste één indeling om te kunnen worden ontleed.
DateTime.TryParseExact("11242015", new [] { "yyyy-MM-dd", "MMddyyyy" }, null, DateTimeStyles.None, out parsedValue); // true