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 zoals AssumeLocal en AssumeUniversal .

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


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow