Sök…


ParseExact

var dateString = "2015-11-24";

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

11/24/2015 12:00:00

Observera att passering av CultureInfo.CurrentCulture som den tredje parametern är identisk med att passera null . Eller så kan du passera en specifik kultur.

Formatera strängar

Inmatningssträngen kan vara i vilket format som helst som matchar formatsträngen

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

11/24/2015 12:00:00

Alla tecken som inte är formatformat behandlas som bokstäver

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

11/24/2015 12:00:00

Ärenden gäller formatformat

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

Observera att månads- och minutvärdena har analyserats till fel destinationer.

Strängar med ett teckenformat måste vara ett av standardformaten

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

undantag

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

Hantering av flera möjliga format

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

Hantering av kulturskillnader

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; Månad: 10

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

Dag: 10; Månad: 11

TryParse

Denna metod accepterar en sträng som inmatning, försöker para den till en DateTime och returnerar ett booleskt resultat som indikerar framgång eller misslyckande. Om samtalet lyckas fylls variabeln som passeras som out parametern med det analyserade resultatet.

Om analysen misslyckas ställs variabeln som passeras som out parametern in på standardvärdet 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?");
}

Den här metoden försöker att analysera inmatningssträngen baserad på systemets regionala inställningar och kända format som ISO 8601 och andra vanliga format.

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

Eftersom den här metoden inte accepterar kulturinformation använder den systeminställningen. Detta kan leda till oväntade resultat.

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

Falsk

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

Falsk

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

Sann

Observera att om du är i USA kan du bli förvånad över att det analyserade resultatet är 10 november, inte 11 oktober.

TryParse (sträng, 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?");
}

Till skillnad från dess syskonmetod gör det möjligt för denna överbelastning att specificera en viss kultur och stil. Att IFormatProvider null för IFormatProvider parametern använder IFormatProvider .

undantag

Observera att det är möjligt för denna metod att kasta ett undantag under vissa förhållanden. Dessa avser parametrarna som introducerats för denna överbelastning: IFormatProvider och DateTimeStyles .

  • NotSupportedException : IFormatProvider anger en neutral kultur
  • ArgumentException : DateTimeStyles är inte ett giltigt alternativ, eller innehåller inkompatibla flaggor som AssumeLocal och AssumeUniversal .

TryParseExact

Den här metoden fungerar som en kombination av TryParse och ParseExact : Den tillåter anpassade format (er) att anges och returnerar ett booleskt resultat som indikerar framgång eller misslyckande snarare än att kasta ett undantag om analysen misslyckas.

TryParseExact (sträng, sträng, IFormatProvider, DateTimeStyles, out DateTime)

Denna överbelastning försöker para ingångssträngen mot ett specifikt format. Inmatningssträngen måste matcha det formatet för att analyseras.

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

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

Denna överbelastning försöker para ingångssträngen mot en mängd format. Inmatningssträngen måste matcha minst ett format för att kunna analyseras.

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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow