DateTime.Parse Metod

Definition

Konverterar strängrepresentationen av ett datum och en tid till motsvarande DateTime .

Överlagringar

Name Description
Parse(String)

Konverterar strängrepresentationen av ett datum och en tid till dess DateTime motsvarighet med hjälp av den aktuella kulturens konventioner.

Parse(ReadOnlySpan<Char>, IFormatProvider)

Parsar ett teckenintervall till ett värde.

Parse(String, IFormatProvider)

Konverterar strängrepresentationen av ett datum och en tid till dess DateTime motsvarighet med hjälp av kulturspecifik formatinformation.

Parse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles)

Konverterar ett minnesintervall som innehåller strängrepresentation av ett datum och en tid till dess DateTime motsvarighet med hjälp av kulturspecifik formatinformation och formateringsformat.

Parse(String, IFormatProvider, DateTimeStyles)

Konverterar strängrepresentationen av ett datum och en tid till dess DateTime motsvarighet med hjälp av kulturspecifik formatinformation och formateringsformat.

Exempel

Flera exempel som anropar DateTime.Parse metoden varvats i avsnittet Anmärkningar i den här artikeln och i dokumentationen för de enskilda DateTime.Parse överlagringarna.

Du kan också ladda ned en fullständig uppsättning DateTime.Parse exempel som ingår i ett .NET Core-projekt för C#.

Kommentarer

I detta avsnitt:

Vilken metod anropar jag?

Till Call
Parsa en datum- och tidssträng med hjälp av den aktuella kulturens konventioner. Parse(String) överbelastning
Parsa en datum- och tidssträng med hjälp av konventionerna i en specifik kultur. Parse(String, IFormatProvider) överbelastning (se Parsnings- och kulturkonventioner)
Parsa en datum- och tidssträng med specialformatelement (till exempel tomt utrymme eller inget tomt utrymme). Parse(String, IFormatProvider, DateTimeStyles) överbelastning
Parsa en datum- och tidssträng som måste vara i ett visst format. DateTime.ParseExact eller DateTime.TryParseExact
Parsa en datum- och tidssträng och utför en konvertering till UTC eller lokal tid. Parse(String, IFormatProvider, DateTimeStyles) överbelastning
Parsa en datum- och tidssträng utan att hantera undantag. DateTime.TryParse metod
Återställ (tur och retur) ett datum- och tidsvärde som skapats av en formateringsåtgärd. Skicka standardformatsträngen "o" eller "r" till ToString(String) metoden och anropa överlagringen Parse(String, IFormatProvider, DateTimeStyles) med DateTimeStyles.RoundtripKind
Parsa en datum- och tidssträng i ett fast format över datorgränser (och eventuellt kulturella). DateTime.ParseExact eller DateTime.TryParseExact metod

Strängen som ska parsas

Metoden Parse försöker konvertera strängrepresentationen av ett datum- och tidsvärde till dess DateTime motsvarighet. Den försöker parsa indatasträngen helt utan att utlösa ett FormatException undantag. När du använder överlagringar som accepterar ett IFormatProvider objekt används det för att parsa StringToParse. Om inget sådant objekt anges CurrentCulture används det i stället.

Important

Om parsningsåtgärden misslyckas på grund av ett okänt strängformat Parse genererar metoden ett FormatException, medan TryParse metoden returnerar false. Eftersom undantagshantering kan vara dyrt bör du använda Parse när parsningsåtgärden förväntas lyckas eftersom indatakällan är betrodd. TryParse är att föredra när det är troligt att parsningsfel är sannolika, särskilt eftersom en indatakälla inte är betrodd, eller om du har rimliga standardvärden som ersättning för strängar som inte parsas korrekt.

Strängen som ska parsas kan ha något av följande formulär:

  • En sträng med ett datum och en tidskomponent.

  • En sträng med ett datum men ingen tidskomponent. Om tidskomponenten saknas förutsätter metoden 12:00 midnatt. Om datumkomponenten har ett tvåsiffrigt år konverteras den till ett år baserat på den Calendar.TwoDigitYearMax aktuella kulturens aktuella kalender eller den angivna kulturens aktuella kalender (om du använder en överlagring med ett argument som inte är null provider ).

  • En sträng med en datumkomponent som endast innehåller komponenten månad och år men ingen dag. Metoden förutsätter den första dagen i månaden.

  • En sträng med en datumkomponent som endast innehåller komponenten månad och dag men inget år. Metoden förutsätter det aktuella året.

  • En sträng med en tid men ingen datumkomponent. Metoden förutsätter det aktuella datumet om du inte anropar överlagringen Parse(String, IFormatProvider, DateTimeStyles) och inkluderar DateTimeStyles.NoCurrentDateDefault i styles argumentet, i vilket fall metoden förutsätter ett datum den 1 januari 0001.

  • En sträng med en tidskomponent som endast innehåller timmen och en AM/PM-designator, utan datumkomponent. Metoden förutsätter aktuellt datum och en tid utan minuter och inga sekunder. Du kan ändra det här beteendet genom att anropa överbelastningen Parse(String, IFormatProvider, DateTimeStyles)DateTimeStyles.NoCurrentDateDefault och inkludera styles i argumentet, i vilket fall metoden förutsätter ett datum den 1 januari 0001.

  • En sträng som innehåller tidszonsinformation och överensstämmer med ISO 8601. I följande exempel anger den första strängen Coordinated Universal Time (UTC) och den andra anger tiden i en tidszon som är sju timmar tidigare än UTC:

    "2008-11-01T19:35:00.0000000Z" "2008-11-01T19:35:00.0000000-07:00"

  • En sträng som innehåller GMT-designatorn och överensstämmer med RFC 1123-tidsformatet. till exempel:

    "Lör, 01 nov 2008 19:35:00 GMT"

  • En sträng som innehåller datum och tid tillsammans med tidszonsförskjutningsinformation. till exempel:

    "03/01/2009 05:42:00 -5:00"

I följande exempel parsas strängar i vart och ett av dessa format med hjälp av formateringskonventionerna för den aktuella kulturen, som i det här fallet är den en-US kulturen:

using System;

public class Example
{
   public static void Main()
   {
      (string dateAsString, string description)[]  dateInfo = { ("08/18/2018 07:22:16", "String with a date and time component"),
                                                                ("08/18/2018", "String with a date component only"),
                                                                ("8/2018", "String with a month and year component only"),
                                                                ("8/18", "String with a month and day component only"),
                                                                ("07:22:16", "String with a time component only"),
                                                                ("7 PM", "String with an hour and AM/PM designator only"),
                                                                ("2018-08-18T07:22:16.0000000Z", "UTC string that conforms to ISO 8601"),
                                                                ("2018-08-18T07:22:16.0000000-07:00", "Non-UTC string that conforms to ISO 8601"),
                                                                ("Sat, 18 Aug 2018 07:22:16 GMT", "String that conforms to RFC 1123"),
                                                                ("08/18/2018 07:22:16 -5:00", "String with date, time, and time zone information" ) };

      Console.WriteLine($"Today is {DateTime.Now:d}\n");

      foreach (var item in dateInfo) {
         Console.WriteLine($"{item.description + ":",-52} '{item.dateAsString}' --> {DateTime.Parse(item.dateAsString)}");
      }
   }
}
// The example displays output like the following:
//   Today is 2/22/2018
//
//   String with a date and time component:               '08/18/2018 07:22:16' --> 8/18/2018 7:22:16 AM
//   String with a date component only:                   '08/18/2018' --> 8/18/2018 12:00:00 AM
//   String with a month and year component only:         '8/2018' --> 8/1/2018 12:00:00 AM
//   String with a month and day component only:          '8/18' --> 8/18/2018 12:00:00 AM
//   String with a time component only:                   '07:22:16' --> 2/22/2018 7:22:16 AM
//   String with an hour and AM/PM designator only:       '7 PM' --> 2/22/2018 7:00:00 PM
//   UTC string that conforms to ISO 8601:                '2018-08-18T07:22:16.0000000Z' --> 8/18/2018 12:22:16 AM
//   Non-UTC string that conforms to ISO 8601:            '2018-08-18T07:22:16.0000000-07:00' --> 8/18/2018 7:22:16 AM
//   String that conforms to RFC 1123:                    'Sat, 18 Aug 2018 07:22:16 GMT' --> 8/18/2018 12:22:16 AM
//   String with date, time, and time zone information:   '08/18/2018 07:22:16 -5:00' --> 8/18/2018 5:22:16 AM
module Parse6

open System

let  dateInfo = 
    [ "08/18/2018 07:22:16", "String with a date and time component"
      "08/18/2018", "String with a date component only"
      "8/2018", "String with a month and year component only"
      "8/18", "String with a month and day component only"
      "07:22:16", "String with a time component only"
      "7 PM", "String with an hour and AM/PM designator only"
      "2018-08-18T07:22:16.0000000Z", "UTC string that conforms to ISO 8601"
      "2018-08-18T07:22:16.0000000-07:00", "Non-UTC string that conforms to ISO 8601"
      "Sat, 18 Aug 2018 07:22:16 GMT", "String that conforms to RFC 1123"
      "08/18/2018 07:22:16 -5:00", "String with date, time, and time zone information" ]

printfn $"Today is {DateTime.Now:d}\n"

for dateAsString, description in dateInfo do
    printfn $"""{description + ":",-52} '{dateAsString}' --> {DateTime.Parse(dateAsString)}"""


// The example displays output like the following:
//   Today is 2/22/2018
//
//   String with a date and time component:               '08/18/2018 07:22:16' --> 8/18/2018 7:22:16 AM
//   String with a date component only:                   '08/18/2018' --> 8/18/2018 12:00:00 AM
//   String with a month and year component only:         '8/2018' --> 8/1/2018 12:00:00 AM
//   String with a month and day component only:          '8/18' --> 8/18/2018 12:00:00 AM
//   String with a time component only:                   '07:22:16' --> 2/22/2018 7:22:16 AM
//   String with an hour and AM/PM designator only:       '7 PM' --> 2/22/2018 7:00:00 PM
//   UTC string that conforms to ISO 8601:                '2018-08-18T07:22:16.0000000Z' --> 8/18/2018 12:22:16 AM
//   Non-UTC string that conforms to ISO 8601:            '2018-08-18T07:22:16.0000000-07:00' --> 8/18/2018 7:22:16 AM
//   String that conforms to RFC 1123:                    'Sat, 18 Aug 2018 07:22:16 GMT' --> 8/18/2018 12:22:16 AM
//   String with date, time, and time zone information:   '08/18/2018 07:22:16 -5:00' --> 8/18/2018 5:22:16 AM

Public Module Strings
   Public Sub Main()
      Dim dateInfo() As (dateAsString As String, description As String) = 
                     { ("08/18/2018 07:22:16", "String with a date and time component"),
                       ("08/18/2018", "String with a date component only"),
                       ("8/2018", "String with a month and year component only"),
                       ("8/18", "String with a month and day component only"),
                       ("07:22:16", "String with a time component only"),
                       ("7 PM", "String with an hour and AM/PM designator only"),
                       ("2018-08-18T07:22:16.0000000Z", "UTC string that conforms to ISO 8601"),   
                       ("2018-08-18T07:22:16.0000000-07:00", "Non-UTC string that conforms to ISO 8601"),
                       ("Sat, 18 Aug 2018 07:22:16 GMT", "String that conforms to RFC 1123"),
                       ("08/18/2018 07:22:16 -5:00", "String with date, time, and time zone information" ) }
   
      Console.WriteLine($"Today is {Date.Now:d}{vbCrLf}")
      
      For Each item in dateInfo
         Console.WriteLine($"{item.description + ":",-52} '{item.dateAsString}' --> {DateTime.Parse(item.dateAsString)}")        
      Next
   End Sub
End Module
' The example displays output like the following:
'   Today is 2/22/2018
'   
'   String with a date and time component:               '08/18/2018 07:22:16' --> 8/18/2018 7:22:16 AM
'   String with a date component only:                   '08/18/2018' --> 8/18/2018 12:00:00 AM
'   String with a month and year component only:         '8/2018' --> 8/1/2018 12:00:00 AM
'   String with a month and day component only:          '8/18' --> 8/18/2018 12:00:00 AM
'   String with a time component only:                   '07:22:16' --> 2/22/2018 7:22:16 AM
'   String with an hour and AM/PM designator only:       '7 PM' --> 2/22/2018 7:00:00 PM
'   UTC string that conforms to ISO 8601:                '2018-08-18T07:22:16.0000000Z' --> 8/18/2018 12:22:16 AM
'   Non-UTC string that conforms to ISO 8601:            '2018-08-18T07:22:16.0000000-07:00' --> 8/18/2018 7:22:16 AM
'   String that conforms to RFC 1123:                    'Sat, 18 Aug 2018 07:22:16 GMT' --> 8/18/2018 12:22:16 AM
'   String with date, time, and time zone information:   '08/18/2018 07:22:16 -5:00' --> 8/18/2018 5:22:16 AM

Om indatasträngen representerar en skottdag under ett skottår i kalendern som används av parsningsmetoden (se Parsning och kulturella konventioner) Parse parsar metoden strängen. Om indatasträngen representerar en skottdag under ett icke-skottår genererar metoden en FormatException.

Parse Eftersom metoden försöker parsa strängrepresentationen av ett datum och en tid med hjälp av formateringsreglerna för den aktuella eller en angiven kultur, kan försök att parsa en sträng mellan olika kulturer misslyckas. Om du vill parsa ett specifikt datum- och tidsformat mellan olika nationella inställningar använder du en av överlagringarna av DateTime.ParseExact metoden och anger en formatspecificerare.

Parsning och kulturella konventioner

Alla överlagringar av Parse metoden är kulturkänsliga om inte strängen som ska parsas (som representeras av s i följande tabell) överensstämmer med ISO 8601-mönstret. Parsningsåtgärden använder formateringsinformationen i ett DateTimeFormatInfo objekt som härleds enligt följande:

Important

Epoker i de japanska kalendrarna baseras på kejsarens regeringstid och förväntas därför förändras. Den 1 maj 2019 markerade till exempel början av Reiwa-eran i JapaneseCalendar och JapaneseLunisolarCalendar. En sådan ändring av era påverkar alla program som använder dessa kalendrar. Mer information och för att avgöra om dina program påverkas finns i Hantera en ny era i den japanska kalendern i .NET. Information om hur du testar dina program i Windows-system för att säkerställa att de är redo för tidsändringen finns i Förbereda ditt program för ändringen av den japanska eran. Funktioner i .NET som stöder kalendrar med flera epoker och bästa praxis när du arbetar med kalendrar som stöder flera epoker finns i Arbeta med epoker.

Om du ringer Och provider är Formateringsinformation härleds från
Parse(String) - Den aktuella kulturen (DateTimeFormatInfo.CurrentInfo egenskapen)
Parse(String, IFormatProvider) eller Parse(String, IFormatProvider, DateTimeStyles) ett DateTimeFormatInfo objekt Det angivna DateTimeFormatInfo objektet
Parse(String, IFormatProvider) eller Parse(String, IFormatProvider, DateTimeStyles) null Den aktuella kulturen (DateTimeFormatInfo.CurrentInfo egenskapen)
Parse(String, IFormatProvider) eller Parse(String, IFormatProvider, DateTimeStyles) ett CultureInfo objekt Egenskapen CultureInfo.DateTimeFormat
Parse(String, IFormatProvider) eller Parse(String, IFormatProvider, DateTimeStyles) Anpassad IFormatProvider implementering IFormatProvider.GetFormat metoden

När formateringsinformation härleds från ett DateTimeFormatInfo objekt DateTimeFormatInfo.Calendar definierar egenskapen den kalender som används i parsningsåtgärden.

Om du parsar en datum- och tidssträng med hjälp av ett DateTimeFormatInfo objekt med anpassade inställningar som skiljer sig från standardkulturen använder du ParseExact metoden i stället för Parse metoden för att förbättra risken för en lyckad konvertering. En datum- och tidssträng som inte är standard kan vara komplicerad och svår att parsa. Metoden Parse försöker parsa en sträng med flera implicita parsningsmönster, som alla kan misslyckas. Metoden kräver däremot ParseExact att du uttryckligen anger ett eller flera exakta parsningsmönster som sannolikt kommer att lyckas. Mer information finns i avsnittet "DateTimeFormatInfo och dynamiska data" i avsnittet DateTimeFormatInfo .

Important

Observera att formateringskonventionerna för en viss kultur är dynamiska och kan komma att ändras. Det innebär att parsningsåtgärder som är beroende av formateringskonventionerna för standardkulturen (aktuell) eller som anger ett IFormatProvider objekt som representerar en annan kultur än den invarianta kulturen oväntat kan misslyckas om något av följande inträffar:

  • Kulturspecifika data har ändrats mellan större eller mindre versioner av .NET Framework eller som ett resultat av en uppdatering av den befintliga versionen av .NET Framework.
  • Kulturspecifika data återspeglar användarinställningar, som kan variera från dator till dator eller session till session.
  • Kulturspecifika data representerar en ersättningskultur som åsidosätter inställningarna för en standardkultur eller en anpassad kultur.

För att förhindra svårigheter att parsa data- och tidssträngar som är associerade med ändringar i kulturella data kan du parsa datum- och tidssträngar med hjälp av den invarianta kulturen, eller anropa ParseExact metoden eller TryParseExact och ange det exakta formatet för strängen som ska parsas. Om du serialiserar och deserialiserar datum- och tidsdata kan du antingen använda formateringskonventionerna för den invarianta kulturen eller serialisera och deserialisera DateTime värdet i binärt format.

Mer information finns i avsnittet "Dynamiska kulturdata" i CultureInfo avsnittet och avsnittet "Persisting DateTime values" (Bevara DateTime-värden) i ämnet DateTime .

Parsnings- och formatelement

Alla Parse överlagringar ignorerar inledande, inre eller avslutande blankstegstecken i indatasträngen (som representeras av s i följande tabell). Datum och tid kan ha ett par inledande och avslutande NUMBER SIGN-tecken ("#", U+0023) och kan följas med ett eller flera NULL-tecken (U+0000).

Dessutom har överlagringen Parse(String, IFormatProvider, DateTimeStyles) en styles parameter som består av en eller flera medlemmar i DateTimeStyles uppräkningen. Den här parametern definierar hur s ska tolkas och hur parsningsåtgärden ska konverteras s till ett datum och en tid. I följande tabell beskrivs effekten av varje DateTimeStyles medlem på parsningsåtgärden.

DateTimeStyles-medlem Effekt på konvertering
AdjustToUniversal Parsar s och konverterar den vid behov till UTC enligt följande:

– Om s innehåller en tidszonsförskjutning, eller om s den inte innehåller någon tidszonsinformation men styles innehåller AssumeLocal flaggan, parsar metoden strängen, anropar ToUniversalTime för att konvertera det returnerade DateTime värdet till UTC och anger Kind egenskapen till DateTimeKind.Utc.
– Om s anger att den representerar UTC, eller om s den inte innehåller tidszonsinformation men styles innehåller AssumeUniversal flaggan, parsar metoden strängen, utför ingen tidszonskonvertering på det returnerade DateTime värdet och anger Kind egenskapen till DateTimeKind.Utc.
- I alla andra fall har flaggan ingen effekt.
AllowInnerWhite Det här värdet ignoreras. Inre tomt utrymme tillåts alltid i datum- och tidselementen si .
AllowLeadingWhite Det här värdet ignoreras. Inledande blanksteg tillåts alltid i datum- och tidselementen si .
AllowTrailingWhite Det här värdet ignoreras. Avslutande blanksteg tillåts alltid i datum- och tidselementen si .
AllowWhiteSpaces Anger att s kan innehålla inledande, inre och avslutande mellanrum. Det här är standardbeteendet. Det kan inte åsidosättas genom att ange ett mer restriktivt DateTimeStyles uppräkningsvärde, Nonetill exempel .
AssumeLocal Anger att om s det inte finns någon tidszonsinformation antas lokal tid. Om inte AdjustToUniversal flaggan finns, sätts Kind-egenskapen för det returnerade DateTime-värdet till DateTimeKind.Local.
AssumeUniversal Anger att UTC antas om s det inte finns någon tidszonsinformation. AdjustToUniversal Om inte flaggan finns konverterar metoden det returnerade DateTime värdet från UTC till lokal tid och anger dess Kind egenskap till DateTimeKind.Local.
None Även om värdet är giltigt ignoreras det.
RoundtripKind För strängar som innehåller tidszonsinformation försöker du förhindra konverteringen av en datum- och tidssträng till ett DateTime värde som representerar en lokal tid med egenskapen Kind inställd på DateTimeKind.Local. Vanligtvis skapas en sådan sträng genom att anropa DateTime.ToString(String) metoden och med hjälp av standardformatsspecificeraren "o", "r" eller "u".

Returvärdet och DateTime.Kind

Överlagringarna DateTime.Parse returnerar ett DateTime värde vars Kind egenskap innehåller tidszonsinformation. Det kan tyda på att tiden är:

I Parse allmänhet returnerar metoden ett DateTime objekt vars Kind egenskap är DateTimeKind.Unspecified. Metoden kan dock Parse också utföra tidszonskonvertering och ange värdet för Kind egenskapen på olika sätt, beroende på värdena för parametrarna s och styles :

Om det Konvertering av tidszon Typegenskap
s innehåller tidszonsinformation. Datum och tid konverteras till tiden i den lokala tidszonen. DateTimeKind.Local
s innehåller tidszonsinformation och styles innehåller AdjustToUniversal flaggan. Datum och tid konverteras till UTC (Coordinated Universal Time). DateTimeKind.Utc
s innehåller Z- eller GMT-tidszonsdesignatorn och styles innehåller RoundtripKind flaggan. Datum och tid tolkas som UTC. DateTimeKind.Utc

I följande exempel konverteras datumsträngar som innehåller tidszonsinformation till tiden i den lokala tidszonen:

using System;

public class Example
{
   public static void Main()
   {
      string[] dateStrings = {"2008-05-01T07:34:42-5:00",
                              "2008-05-01 7:34:42Z",
                              "Thu, 01 May 2008 07:34:42 GMT"};
      foreach (string dateString in dateStrings)
      {
         DateTime convertedDate = DateTime.Parse(dateString);
         Console.WriteLine($"Converted {dateString} to {convertedDate.Kind} time {convertedDate}");
      }
   }
}
// These calls to the DateTime.Parse method display the following output:
//  Converted 2008-05-01T07:34:42-5:00 to Local time 5/1/2008 5:34:42 AM
//  Converted 2008-05-01 7:34:42Z to Local time 5/1/2008 12:34:42 AM
//  Converted Thu, 01 May 2008 07:34:42 GMT to Local time 5/1/2008 12:34:42 AM
open System

let dateStrings = 
    [ "2008-05-01T07:34:42-5:00"
      "2008-05-01 7:34:42Z"
      "Thu, 01 May 2008 07:34:42 GMT" ]

for dateString in dateStrings do
    let convertedDate = DateTime.Parse dateString
    printfn $"Converted {dateString} to {convertedDate.Kind} time {convertedDate}"

// These calls to the DateTime.Parse method display the following output:
//  Converted 2008-05-01T07:34:42-5:00 to Local time 5/1/2008 5:34:42 AM
//  Converted 2008-05-01 7:34:42Z to Local time 5/1/2008 12:34:42 AM
//  Converted Thu, 01 May 2008 07:34:42 GMT to Local time 5/1/2008 12:34:42 AM
Module Example
   Public Sub Main()
      Dim dateStrings() As String = {"2008-05-01T07:34:42-5:00", 
                                     "2008-05-01 7:34:42Z", 
                                     "Thu, 01 May 2008 07:34:42 GMT"}
      
      For Each dateStr In dateStrings
         Dim convertedDate As Date = Date.Parse(dateStr)
         Console.WriteLine($"Converted {dateStr} to {convertedDate.Kind} time {convertedDate}")
      Next 
   End Sub
End Module
' These calls to the DateTime.Parse method display the following output:
'   Converted 2008-05-01T07:34:42-5:00 to Local time 5/1/2008 5:34:42 AM
'   Converted 2008-05-01 7:34:42Z to Local time 5/1/2008 12:34:42 AM
'   Converted Thu, 01 May 2008 07:34:42 GMT to Local time 5/1/2008 12:34:42 AM

Du kan också bevara värdet för en datum- och tidsegenskap Kind under en formaterings- och parsningsåtgärd med hjälp DateTimeStyles.RoundtripKind av flaggan. I följande exempel visas hur RoundtripKind flaggan påverkar parsningsåtgärden för DateTime värden som konverteras till strängar med formatspecificeraren "o", "r" eller "u".

   string[] formattedDates = { "2008-09-15T09:30:41.7752486-07:00",
                               "2008-09-15T09:30:41.7752486Z",
                               "2008-09-15T09:30:41.7752486",
                               "2008-09-15T09:30:41.7752486-04:00",
                               "Mon, 15 Sep 2008 09:30:41 GMT" };
   foreach (string formattedDate in formattedDates)
   {
      Console.WriteLine(formattedDate);
      DateTime roundtripDate = DateTime.Parse(formattedDate, null,
                                              DateTimeStyles.RoundtripKind);
      Console.WriteLine($"   With RoundtripKind flag: {roundtripDate} {roundtripDate.Kind} time.");

      DateTime noRoundtripDate = DateTime.Parse(formattedDate, null,
                                                DateTimeStyles.None);
      Console.WriteLine($"   Without RoundtripKind flag: {noRoundtripDate} {noRoundtripDate.Kind} time.");
   }
// The example displays the following output:
//       2008-09-15T09:30:41.7752486-07:00
//          With RoundtripKind flag: 9/15/2008 9:30:41 AM Local time.
//          Without RoundtripKind flag: 9/15/2008 9:30:41 AM Local time.
//       2008-09-15T09:30:41.7752486Z
//          With RoundtripKind flag: 9/15/2008 9:30:41 AM Utc time.
//          Without RoundtripKind flag: 9/15/2008 2:30:41 AM Local time.
//       2008-09-15T09:30:41.7752486
//          With RoundtripKind flag: 9/15/2008 9:30:41 AM Unspecified time.
//          Without RoundtripKind flag: 9/15/2008 9:30:41 AM Unspecified time.
//       2008-09-15T09:30:41.7752486-04:00
//          With RoundtripKind flag: 9/15/2008 6:30:41 AM Local time.
//          Without RoundtripKind flag: 9/15/2008 6:30:41 AM Local time.
//       Mon, 15 Sep 2008 09:30:41 GMT
//          With RoundtripKind flag: 9/15/2008 9:30:41 AM Utc time.
//          Without RoundtripKind flag: 9/15/2008 2:30:41 AM Local time.
let formattedDates = 
    [ "2008-09-15T09:30:41.7752486-07:00"
      "2008-09-15T09:30:41.7752486Z"
      "2008-09-15T09:30:41.7752486"
      "2008-09-15T09:30:41.7752486-04:00"
      "Mon, 15 Sep 2008 09:30:41 GMT" ]

for formattedDate in formattedDates do
    printfn $"{formattedDate}"
    let roundtripDate = DateTime.Parse(formattedDate, null, DateTimeStyles.RoundtripKind)
    printfn $"   With RoundtripKind flag: {roundtripDate} {roundtripDate.Kind} time."

    let noRoundtripDate = DateTime.Parse(formattedDate, null, DateTimeStyles.None)
    printfn $"   Without RoundtripKind flag: {noRoundtripDate} {noRoundtripDate.Kind} time."

// The example displays the following output:
//       2008-09-15T09:30:41.7752486-07:00
//          With RoundtripKind flag: 9/15/2008 9:30:41 AM Local time.
//          Without RoundtripKind flag: 9/15/2008 9:30:41 AM Local time.
//       2008-09-15T09:30:41.7752486Z
//          With RoundtripKind flag: 9/15/2008 9:30:41 AM Utc time.
//          Without RoundtripKind flag: 9/15/2008 2:30:41 AM Local time.
//       2008-09-15T09:30:41.7752486
//          With RoundtripKind flag: 9/15/2008 9:30:41 AM Unspecified time.
//          Without RoundtripKind flag: 9/15/2008 9:30:41 AM Unspecified time.
//       2008-09-15T09:30:41.7752486-04:00
//          With RoundtripKind flag: 9/15/2008 6:30:41 AM Local time.
//          Without RoundtripKind flag: 9/15/2008 6:30:41 AM Local time.
//       Mon, 15 Sep 2008 09:30:41 GMT
//          With RoundtripKind flag: 9/15/2008 9:30:41 AM Utc time.
//          Without RoundtripKind flag: 9/15/2008 2:30:41 AM Local time.
Dim formattedDates() = { "2008-09-15T09:30:41.7752486-07:00", 
                           "2008-09-15T09:30:41.7752486Z",  
                           "2008-09-15T09:30:41.7752486",  
                           "2008-09-15T09:30:41.7752486-04:00", 
                           "Mon, 15 Sep 2008 09:30:41 GMT" }
For Each formattedDate In formattedDates
   Console.WriteLine(formattedDate)
   Dim roundtripDate = DateTime.Parse(formattedDate, Nothing,  
                                      DateTimeStyles.RoundtripKind)                        
   Console.WriteLine($"   With RoundtripKind flag: {roundtripDate} {roundtripDate.Kind} time.")                                          
   Dim noRoundtripDate = DateTime.Parse(formattedDate, Nothing,                                                                                                  DateTimeStyles.None)
   Console.WriteLine($"   Without RoundtripKind flag: {noRoundtripDate} {noRoundtripDate.Kind} time.")
Next         
' The example displays the following output:
'       2008-09-15T09:30:41.7752486-07:00
'          With RoundtripKind flag: 9/15/2008 9:30:41 AM Local time.
'          Without RoundtripKind flag: 9/15/2008 9:30:41 AM Local time.
'       2008-09-15T09:30:41.7752486Z
'          With RoundtripKind flag: 9/15/2008 9:30:41 AM Utc time.
'          Without RoundtripKind flag: 9/15/2008 2:30:41 AM Local time.
'       2008-09-15T09:30:41.7752486
'          With RoundtripKind flag: 9/15/2008 9:30:41 AM Unspecified time.
'          Without RoundtripKind flag: 9/15/2008 9:30:41 AM Unspecified time.
'       2008-09-15T09:30:41.7752486-04:00
'          With RoundtripKind flag: 9/15/2008 6:30:41 AM Local time.
'          Without RoundtripKind flag: 9/15/2008 6:30:41 AM Local time.
'       Mon, 15 Sep 2008 09:30:41 GMT
'          With RoundtripKind flag: 9/15/2008 9:30:41 AM Utc time.
'          Without RoundtripKind flag: 9/15/2008 2:30:41 AM Local time.

Parse(String)

Källa:
DateTime.cs
Källa:
DateTime.cs
Källa:
DateTime.cs
Källa:
DateTime.cs
Källa:
DateTime.cs

Konverterar strängrepresentationen av ett datum och en tid till dess DateTime motsvarighet med hjälp av den aktuella kulturens konventioner.

public:
 static DateTime Parse(System::String ^ s);
public static DateTime Parse(string s);
static member Parse : string -> DateTime
Public Shared Function Parse (s As String) As DateTime

Parametrar

s
String

En sträng som innehåller ett datum och en tid som ska konverteras. Mer information finns i Strängen som ska parsas .

Returer

Ett objekt som motsvarar datum och tid i s.

Undantag

s är null.

s innehåller inte en giltig strängrepresentation av ett datum och en tid.

Exempel

I följande exempel parsas strängrepresentationen av flera datum- och tidsvärden genom att:

  • Använd standardformatprovidern, som tillhandahåller formateringskonventionerna för den aktuella kulturen på den dator som används för att producera exempelutdata. Utdata från det här exemplet återspeglar formateringskonventionerna för en-US kultur.

  • Använd standardformatvärdet, som är AllowWhiteSpaces.

Det hanterar undantaget FormatException som utlöses när metoden försöker parsa strängrepresentationen av ett datum och en tid med hjälp av någon annan kulturs formateringskonventioner. Den visar också hur du parsar ett datum- och tidsvärde som inte använder formateringskonventionerna för den aktuella kulturen.

using System;
using System.Globalization;

public class DateTimeParser
{
   public static void Main()
   {
      // Assume the current culture is en-US.
      // The date is February 16, 2008, 12 hours, 15 minutes and 12 seconds.

      // Use standard en-US date and time value
      DateTime dateValue;
      string dateString = "2/16/2008 12:15:12 PM";
      try {
         dateValue = DateTime.Parse(dateString);
         Console.WriteLine("'{0}' converted to {1}.", dateString, dateValue);
      }
      catch (FormatException) {
         Console.WriteLine("Unable to convert '{0}'.", dateString);
      }

      // Reverse month and day to conform to the fr-FR culture.
      // The date is February 16, 2008, 12 hours, 15 minutes and 12 seconds.
      dateString = "16/02/2008 12:15:12";
      try {
         dateValue = DateTime.Parse(dateString);
         Console.WriteLine("'{0}' converted to {1}.", dateString, dateValue);
      }
      catch (FormatException) {
         Console.WriteLine("Unable to convert '{0}'.", dateString);
      }

      // Call another overload of Parse to successfully convert string
      // formatted according to conventions of fr-FR culture.
      try {
         dateValue = DateTime.Parse(dateString, new CultureInfo("fr-FR", false));
         Console.WriteLine("'{0}' converted to {1}.", dateString, dateValue);
      }
      catch (FormatException) {
         Console.WriteLine("Unable to convert '{0}'.", dateString);
      }

      // Parse string with date but no time component.
      dateString = "2/16/2008";
      try {
         dateValue = DateTime.Parse(dateString);
         Console.WriteLine("'{0}' converted to {1}.", dateString, dateValue);
      }
      catch (FormatException) {
         Console.WriteLine("Unable to convert '{0}'.", dateString);
      }
   }
}
// The example displays the following output to the console:
//       '2/16/2008 12:15:12 PM' converted to 2/16/2008 12:15:12 PM.
//       Unable to convert '16/02/2008 12:15:12'.
//       '16/02/2008 12:15:12' converted to 2/16/2008 12:15:12 PM.
//       '2/16/2008' converted to 2/16/2008 12:00:00 AM.
open System
open System.Globalization

[<EntryPoint>]
let main _ =
    // Assume the current culture is en-US.
    // The date is February 16, 2008, 12 hours, 15 minutes and 12 seconds.

    // Use standard en-US date and time value
    let dateString = "2/16/2008 12:15:12 PM"
    try
        let dateValue = DateTime.Parse dateString
        printfn $"'{dateString}' converted to {dateValue}."
    with :? FormatException ->
        printfn $"Unable to convert '{dateString}'."

    // Reverse month and day to conform to the fr-FR culture.
    // The date is February 16, 2008, 12 hours, 15 minutes and 12 seconds.
    let dateString = "16/02/2008 12:15:12"
    try
        let dateValue = DateTime.Parse dateString
        printfn $"'{dateString}' converted to {dateValue}."
    with :? FormatException ->
        Console.WriteLine("Unable to convert '{0}'.", dateString)

    // Call another overload of Parse to successfully convert string
    // formatted according to conventions of fr-FR culture.
    try
        let dateValue = DateTime.Parse(dateString, CultureInfo("fr-FR", false))
        printfn $"'{dateString}' converted to {dateValue}."
    with :? FormatException ->
        printfn $"Unable to convert '{dateString}'."

    // Parse string with date but no time component.
    let dateString = "2/16/2008"
    try
        let dateValue = DateTime.Parse dateString
        printfn $"'{dateString}' converted to {dateValue}."
    with :? FormatException ->
        printfn $"Unable to convert '{dateString}'."

    0

// The example displays the following output to the console:
//       '2/16/2008 12:15:12 PM' converted to 2/16/2008 12:15:12 PM.
//       Unable to convert '16/02/2008 12:15:12'.
//       '16/02/2008 12:15:12' converted to 2/16/2008 12:15:12 PM.
//       '2/16/2008' converted to 2/16/2008 12:00:00 AM.
Imports System.Globalization

Class DateTimeParser
   Public Shared Sub Main()
      ' Assume the current culture is en-US. 
      ' The date is February 16, 2008, 12 hours, 15 minutes and 12 seconds.

      ' Use standard en-US date and time value
      Dim dateValue As Date
      Dim dateString As String = "2/16/2008 12:15:12 PM"
      Try
         dateValue = Date.Parse(dateString)
         Console.WriteLine("'{0}' converted to {1}.", dateString, dateValue)
      Catch e As FormatException
         Console.WriteLine("Unable to convert '{0}'.", dateString)
      End Try
            
      ' Reverse month and day to conform to the fr-FR culture.
      ' The date is February 16, 2008, 12 hours, 15 minutes and 12 seconds.
      dateString = "16/02/2008 12:15:12"
      Try
         dateValue = Date.Parse(dateString)
         Console.WriteLine("'{0}' converted to {1}.", dateString, dateValue)
      Catch e As FormatException
         Console.WriteLine("Unable to convert '{0}'.", dateString)
      End Try

      ' Call another overload of Parse to successfully convert string
      ' formatted according to conventions of fr-FR culture.      
      Try
         dateValue = Date.Parse(dateString, New CultureInfo("fr-FR", False))
         Console.WriteLine("'{0}' converted to {1}.", dateString, dateValue)
      Catch e As FormatException
         Console.WriteLine("Unable to convert '{0}'.", dateString)
      End Try
      
      ' Parse string with date but no time component.
      dateString = "2/16/2008"
      Try
         dateValue = Date.Parse(dateString)
         Console.WriteLine("'{0}' converted to {1}.", dateString, dateValue)
      Catch e As FormatException
         Console.WriteLine("Unable to convert '{0}'.", dateString)
      End Try
   End Sub 
End Class 
' The example displays the following output to the console:
'       '2/16/2008 12:15:12 PM' converted to 2/16/2008 12:15:12 PM.
'       Unable to convert '16/02/2008 12:15:12'.
'       '16/02/2008 12:15:12' converted to 2/16/2008 12:15:12 PM.
'       '2/16/2008' converted to 2/16/2008 12:00:00 AM.

Kommentarer

Om s innehåller tidszonsinformation returnerar den här metoden ett DateTime värde vars Kind egenskap är DateTimeKind.Local och konverterar datum och tid s till lokal tid. Annars utför den ingen tidszonskonvertering och returnerar ett DateTime värde vars Kind egenskap är DateTimeKind.Unspecified.

Den här överlagringen försöker parsa s med hjälp av formateringskonventionerna i den aktuella kulturen. Den aktuella kulturen anges av egenskapen CurrentCulture . Om du vill parsa en sträng med formateringskonventionerna för en viss kultur anropar Parse(String, IFormatProvider) du överlagringarna Parse(String, IFormatProvider, DateTimeStyles) eller .

Den här överlagringen försöker parsa s med hjälp DateTimeStyles.AllowWhiteSpaces av formatmall.

Se även

Gäller för

Parse(ReadOnlySpan<Char>, IFormatProvider)

Källa:
DateTime.cs
Källa:
DateTime.cs
Källa:
DateTime.cs
Källa:
DateTime.cs
Källa:
DateTime.cs

Parsar ett teckenintervall till ett värde.

public:
 static DateTime Parse(ReadOnlySpan<char> s, IFormatProvider ^ provider) = ISpanParsable<DateTime>::Parse;
public static DateTime Parse(ReadOnlySpan<char> s, IFormatProvider? provider);
static member Parse : ReadOnlySpan<char> * IFormatProvider -> DateTime
Public Shared Function Parse (s As ReadOnlySpan(Of Char), provider As IFormatProvider) As DateTime

Parametrar

s
ReadOnlySpan<Char>

Det intervall med tecken som ska parsas.

provider
IFormatProvider

Ett objekt som tillhandahåller kulturspecifik formateringsinformation om s.

Returer

Resultatet av parsning s.

Implementeringar

Gäller för

Parse(String, IFormatProvider)

Källa:
DateTime.cs
Källa:
DateTime.cs
Källa:
DateTime.cs
Källa:
DateTime.cs
Källa:
DateTime.cs

Konverterar strängrepresentationen av ett datum och en tid till dess DateTime motsvarighet med hjälp av kulturspecifik formatinformation.

public:
 static DateTime Parse(System::String ^ s, IFormatProvider ^ provider);
public:
 static DateTime Parse(System::String ^ s, IFormatProvider ^ provider) = IParsable<DateTime>::Parse;
public static DateTime Parse(string s, IFormatProvider provider);
public static DateTime Parse(string s, IFormatProvider? provider);
static member Parse : string * IFormatProvider -> DateTime
Public Shared Function Parse (s As String, provider As IFormatProvider) As DateTime

Parametrar

s
String

En sträng som innehåller ett datum och en tid som ska konverteras. Mer information finns i Strängen som ska parsas .

provider
IFormatProvider

Ett objekt som tillhandahåller kulturspecifik formatinformation om s. Se Parsning och kulturella konventioner

Returer

Ett objekt som motsvarar det datum och den tid som anges i sprovider.

Implementeringar

Undantag

s är null.

s innehåller inte en giltig strängrepresentation av ett datum och en tid.

Exempel

I följande exempel parsas en matris med datumsträngar med hjälp av konventionerna i en-US, fr-FRoch de-DE kulturer. Den visar att strängrepresentationer av ett enda datum kan tolkas på olika sätt i olika kulturer.

using System;
using System.Globalization;

public class ParseDate
{
   public static void Main()
   {
      // Define cultures to be used to parse dates.
      CultureInfo[] cultures = {CultureInfo.CreateSpecificCulture("en-US"),
                                CultureInfo.CreateSpecificCulture("fr-FR"),
                                CultureInfo.CreateSpecificCulture("de-DE")};
      // Define string representations of a date to be parsed.
      string[] dateStrings = {"01/10/2009 7:34 PM",
                              "10.01.2009 19:34",
                              "10-1-2009 19:34" };
      // Parse dates using each culture.
      foreach (CultureInfo culture in cultures)
      {
         DateTime dateValue;
         Console.WriteLine("Attempted conversions using {0} culture.",
                           culture.Name);
         foreach (string dateString in dateStrings)
         {
            try {
               dateValue = DateTime.Parse(dateString, culture);
               Console.WriteLine("   Converted '{0}' to {1}.",
                                 dateString, dateValue.ToString("f", culture));
            }
            catch (FormatException) {
               Console.WriteLine("   Unable to convert '{0}' for culture {1}.",
                                 dateString, culture.Name);
            }
         }
         Console.WriteLine();
      }
   }
}
// The example displays the following output to the console:
//       Attempted conversions using en-US culture.
//          Converted '01/10/2009 7:34 PM' to Saturday, January 10, 2009 7:34 PM.
//          Converted '10.01.2009 19:34' to Thursday, October 01, 2009 7:34 PM.
//          Converted '10-1-2009 19:34' to Thursday, October 01, 2009 7:34 PM.
//
//       Attempted conversions using fr-FR culture.
//          Converted '01/10/2009 7:34 PM' to jeudi 1 octobre 2009 19:34.
//          Converted '10.01.2009 19:34' to samedi 10 janvier 2009 19:34.
//          Converted '10-1-2009 19:34' to samedi 10 janvier 2009 19:34.
//
//       Attempted conversions using de-DE culture.
//          Converted '01/10/2009 7:34 PM' to Donnerstag, 1. Oktober 2009 19:34.
//          Converted '10.01.2009 19:34' to Samstag, 10. Januar 2009 19:34.
//          Converted '10-1-2009 19:34' to Samstag, 10. Januar 2009 19:34.
open System
open System.Globalization

// Define cultures to be used to parse dates.
let cultures = 
    [ CultureInfo.CreateSpecificCulture "en-US"
      CultureInfo.CreateSpecificCulture "fr-FR"
      CultureInfo.CreateSpecificCulture "de-DE" ]

// Define string representations of a date to be parsed.
let dateStrings = 
    [ "01/10/2009 7:34 PM"
      "10.01.2009 19:34"
      "10-1-2009 19:34" ]

// Parse dates using each culture.
for culture in cultures do
    printfn $"Attempted conversions using {culture.Name} culture."
    for dateString in dateStrings do
        try
            let dateValue = DateTime.Parse(dateString, culture)
            printfn $"""   Converted '{dateString}' to {dateValue.ToString("f", culture)}."""
        with :? FormatException ->
            printfn $"   Unable to convert '{dateString}' for culture {culture.Name}." 
    printfn ""


// The example displays the following output to the console:
//       Attempted conversions using en-US culture.
//          Converted '01/10/2009 7:34 PM' to Saturday, January 10, 2009 7:34 PM.
//          Converted '10.01.2009 19:34' to Thursday, October 01, 2009 7:34 PM.
//          Converted '10-1-2009 19:34' to Thursday, October 01, 2009 7:34 PM.
//
//       Attempted conversions using fr-FR culture.
//          Converted '01/10/2009 7:34 PM' to jeudi 1 octobre 2009 19:34.
//          Converted '10.01.2009 19:34' to samedi 10 janvier 2009 19:34.
//          Converted '10-1-2009 19:34' to samedi 10 janvier 2009 19:34.
//
//       Attempted conversions using de-DE culture.
//          Converted '01/10/2009 7:34 PM' to Donnerstag, 1. Oktober 2009 19:34.
//          Converted '10.01.2009 19:34' to Samstag, 10. Januar 2009 19:34.
//          Converted '10-1-2009 19:34' to Samstag, 10. Januar 2009 19:34.
Imports System.Globalization

Module ParseDate
   Public Sub Main()
      ' Define cultures to be used to parse dates.
      Dim cultures() As CultureInfo = {CultureInfo.CreateSpecificCulture("en-US"), _
                                       CultureInfo.CreateSpecificCulture("fr-FR"), _
                                       CultureInfo.CreateSpecificCulture("de-DE")}
      ' Define string representations of a date to be parsed.
      Dim dateStrings() As String = {"01/10/2009 7:34 PM", _
                                     "10.01.2009 19:34", _
                                     "10-1-2009 19:34" }
      ' Parse dates using each culture.
      For Each culture In cultures
         Dim dateValue As Date
         Console.WriteLine("Attempted conversions using {0} culture.", culture.Name)
         For Each dateString As String In dateStrings
            Try
               dateValue = Date.Parse(dateString, culture)
               Console.WriteLine("   Converted '{0}' to {1}.", _
                                 dateString, dateValue.ToString("f", culture))
            Catch e As FormatException
               Console.WriteLine("   Unable to convert '{0}' for culture {1}.", _
                                 dateString, culture.Name)
            End Try                                                
         Next
         Console.WriteLine()
      Next                                                                                     
   End Sub
End Module
' The example displays the following output to the console:
'       Attempted conversions using en-US culture.
'          Converted '01/10/2009 7:34 PM' to Saturday, January 10, 2009 7:34 PM.
'          Converted '10.01.2009 19:34' to Thursday, October 01, 2009 7:34 PM.
'          Converted '10-1-2009 19:34' to Thursday, October 01, 2009 7:34 PM.
'       
'       Attempted conversions using fr-FR culture.
'          Converted '01/10/2009 7:34 PM' to jeudi 1 octobre 2009 19:34.
'          Converted '10.01.2009 19:34' to samedi 10 janvier 2009 19:34.
'          Converted '10-1-2009 19:34' to samedi 10 janvier 2009 19:34.
'       
'       Attempted conversions using de-DE culture.
'          Converted '01/10/2009 7:34 PM' to Donnerstag, 1. Oktober 2009 19:34.
'          Converted '10.01.2009 19:34' to Samstag, 10. Januar 2009 19:34.
'          Converted '10-1-2009 19:34' to Samstag, 10. Januar 2009 19:34.

Kommentarer

Om s innehåller tidszonsinformation returnerar den här metoden ett DateTime värde vars Kind egenskap är DateTimeKind.Local och konverterar datum och tid s till lokal tid. Annars utför den ingen tidszonskonvertering och returnerar ett DateTime värde vars Kind egenskap är DateTimeKind.Unspecified.

Den här överlagringen försöker parsa s med hjälp DateTimeStyles.AllowWhiteSpaces av formatet .

Se även

Gäller för

Parse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles)

Källa:
DateTime.cs
Källa:
DateTime.cs
Källa:
DateTime.cs
Källa:
DateTime.cs
Källa:
DateTime.cs

Konverterar ett minnesintervall som innehåller strängrepresentation av ett datum och en tid till dess DateTime motsvarighet med hjälp av kulturspecifik formatinformation och formateringsformat.

public static DateTime Parse(ReadOnlySpan<char> s, IFormatProvider? provider = default, System.Globalization.DateTimeStyles styles = System.Globalization.DateTimeStyles.None);
public static DateTime Parse(ReadOnlySpan<char> s, IFormatProvider provider = default, System.Globalization.DateTimeStyles styles = System.Globalization.DateTimeStyles.None);
static member Parse : ReadOnlySpan<char> * IFormatProvider * System.Globalization.DateTimeStyles -> DateTime
Public Shared Function Parse (s As ReadOnlySpan(Of Char), Optional provider As IFormatProvider = Nothing, Optional styles As DateTimeStyles = System.Globalization.DateTimeStyles.None) As DateTime

Parametrar

s
ReadOnlySpan<Char>

Minnesintervallet som innehåller strängen som ska parsas. Mer information finns i Strängen som ska parsas .

provider
IFormatProvider

Ett objekt som tillhandahåller kulturspecifik formatinformation om s. Se Parsning och kulturella konventioner

styles
DateTimeStyles

En bitvis kombination av uppräkningsvärdena som anger de formatelement som kan finnas i s för att parsningsåtgärden ska lyckas, och som definierar hur du tolkar det tolkade datumet i förhållande till den aktuella tidszonen eller det aktuella datumet. Ett typiskt värde att ange är None.

Returer

Ett objekt som motsvarar datum och tid i s, enligt angivet av provider och styles.

Undantag

s innehåller inte en giltig strängrepresentation av ett datum och en tid.

styles innehåller en ogiltig kombination av DateTimeStyles värden. Till exempel både AssumeLocal och AssumeUniversal.

Gäller för

Parse(String, IFormatProvider, DateTimeStyles)

Källa:
DateTime.cs
Källa:
DateTime.cs
Källa:
DateTime.cs
Källa:
DateTime.cs
Källa:
DateTime.cs

Konverterar strängrepresentationen av ett datum och en tid till dess DateTime motsvarighet med hjälp av kulturspecifik formatinformation och formateringsformat.

public:
 static DateTime Parse(System::String ^ s, IFormatProvider ^ provider, System::Globalization::DateTimeStyles styles);
public static DateTime Parse(string s, IFormatProvider provider, System.Globalization.DateTimeStyles styles);
public static DateTime Parse(string s, IFormatProvider? provider, System.Globalization.DateTimeStyles styles);
static member Parse : string * IFormatProvider * System.Globalization.DateTimeStyles -> DateTime
Public Shared Function Parse (s As String, provider As IFormatProvider, styles As DateTimeStyles) As DateTime

Parametrar

s
String

En sträng som innehåller ett datum och en tid som ska konverteras. Mer information finns i Strängen som ska parsas .

provider
IFormatProvider

Ett objekt som tillhandahåller kulturspecifik formateringsinformation om s. Se Parsning och kulturella konventioner

styles
DateTimeStyles

En bitvis kombination av uppräkningsvärdena som anger de formatelement som kan finnas i s för att parsningsåtgärden ska lyckas, och som definierar hur du tolkar det tolkade datumet i förhållande till den aktuella tidszonen eller det aktuella datumet. Ett typiskt värde att ange är None.

Returer

Ett objekt som motsvarar datum och tid i s, enligt angivet av provider och styles.

Undantag

s är null.

s innehåller inte en giltig strängrepresentation av ett datum och en tid.

styles innehåller en ogiltig kombination av DateTimeStyles värden. Till exempel både AssumeLocal och AssumeUniversal.

Exempel

I följande exempel visas Parse(String, IFormatProvider, DateTimeStyles) metoden och värdet för egenskapen för Kind de resulterande DateTime värdena visas.

using System;
using System.Globalization;

public class ParseDateExample
{
   public static void Main()
   {
      string dateString;
      CultureInfo culture ;
      DateTimeStyles styles;
      DateTime result;

      // Parse a date and time with no styles.
      dateString = "03/01/2009 10:00 AM";
      culture = CultureInfo.CreateSpecificCulture("en-US");
      styles = DateTimeStyles.None;
      try {
         result = DateTime.Parse(dateString, culture, styles);
         Console.WriteLine("{0} converted to {1} {2}.",
                           dateString, result, result.Kind.ToString());
      }
      catch (FormatException) {
         Console.WriteLine("Unable to convert {0} to a date and time.",
                           dateString);
      }

      // Parse the same date and time with the AssumeLocal style.
      styles = DateTimeStyles.AssumeLocal;
      try {
         result = DateTime.Parse(dateString, culture, styles);
         Console.WriteLine("{0} converted to {1} {2}.",
                           dateString, result, result.Kind.ToString());
      }
      catch (FormatException) {
         Console.WriteLine("Unable to convert {0} to a date and time.", dateString);
      }

      // Parse a date and time that is assumed to be local.
      // This time is five hours behind UTC. The local system's time zone is
      // eight hours behind UTC.
      dateString = "2009/03/01T10:00:00-5:00";
      styles = DateTimeStyles.AssumeLocal;
      try {
         result = DateTime.Parse(dateString, culture, styles);
         Console.WriteLine("{0} converted to {1} {2}.",
                           dateString, result, result.Kind.ToString());
      }
      catch (FormatException) {
         Console.WriteLine("Unable to convert {0} to a date and time.", dateString);
      }

      // Attempt to convert a string in improper ISO 8601 format.
      dateString = "03/01/2009T10:00:00-5:00";
      try {
         result = DateTime.Parse(dateString, culture, styles);
         Console.WriteLine("{0} converted to {1} {2}.",
                           dateString, result, result.Kind.ToString());
      }
      catch (FormatException) {
         Console.WriteLine("Unable to convert {0} to a date and time.", dateString);
      }

      // Assume a date and time string formatted for the fr-FR culture is the local
      // time and convert it to UTC.
      dateString = "2008-03-01 10:00";
      culture = CultureInfo.CreateSpecificCulture("fr-FR");
      styles = DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeLocal;
      try {
         result = DateTime.Parse(dateString, culture, styles);
         Console.WriteLine("{0} converted to {1} {2}.",
                           dateString, result, result.Kind.ToString());
      }
      catch (FormatException) {
         Console.WriteLine("Unable to convert {0} to a date and time.", dateString);
      }
   }
}
// The example displays the following output to the console:
//       03/01/2009 10:00 AM converted to 3/1/2009 10:00:00 AM Unspecified.
//       03/01/2009 10:00 AM converted to 3/1/2009 10:00:00 AM Local.
//       2009/03/01T10:00:00-5:00 converted to 3/1/2009 7:00:00 AM Local.
//       Unable to convert 03/01/2009T10:00:00-5:00 to a date and time.
//       2008-03-01 10:00 converted to 3/1/2008 6:00:00 PM Utc.
open System
open System.Globalization

[<EntryPoint>]
let main _ =
    // Parse a date and time with no styles.
    let dateString = "03/01/2009 10:00 AM"
    let culture = CultureInfo.CreateSpecificCulture "en-US"
    let styles = DateTimeStyles.None
    try
        let result = DateTime.Parse(dateString, culture, styles)
        printfn $"{dateString} converted to {result} {result.Kind}."
    with :? FormatException ->
        printfn $"Unable to convert {dateString} to a date and time."

    // Parse the same date and time with the AssumeLocal style.
    let styles = DateTimeStyles.AssumeLocal
    try
        let result = DateTime.Parse(dateString, culture, styles)
        printfn $"{dateString} converted to {result} {result.Kind}."
    with :? FormatException ->
        printfn $"Unable to convert {dateString} to a date and time."

    // Parse a date and time that is assumed to be local.
    // This time is five hours behind UTC. The local system's time zone is
    // eight hours behind UTC.
    let dateString = "2009/03/01T10:00:00-5:00"
    let styles = DateTimeStyles.AssumeLocal
    try
        let result = DateTime.Parse(dateString, culture, styles)
        printfn $"{dateString} converted to {result} {result.Kind}."
    with :? FormatException ->
        printfn $"Unable to convert {dateString} to a date and time."

    // Attempt to convert a string in improper ISO 8601 format.
    let dateString = "03/01/2009T10:00:00-5:00"
    try
        let result = DateTime.Parse(dateString, culture, styles)
        printfn $"{dateString} converted to {result} {result.Kind}."
    with :? FormatException ->
        printfn $"Unable to convert {dateString} to a date and time."

    // Assume a date and time string formatted for the fr-FR culture is the local
    // time and convert it to UTC.
    let dateString = "2008-03-01 10:00"
    let culture = CultureInfo.CreateSpecificCulture "fr-FR"
    let styles = DateTimeStyles.AdjustToUniversal ||| DateTimeStyles.AssumeLocal
    try
        let result = DateTime.Parse(dateString, culture, styles)
        printfn $"{dateString} converted to {result} {result.Kind}."
    with :? FormatException ->
        printfn $"Unable to convert {dateString} to a date and time."

    0

// The example displays the following output to the console:
//       03/01/2009 10:00 AM converted to 3/1/2009 10:00:00 AM Unspecified.
//       03/01/2009 10:00 AM converted to 3/1/2009 10:00:00 AM Local.
//       2009/03/01T10:00:00-5:00 converted to 3/1/2009 7:00:00 AM Local.
//       Unable to convert 03/01/2009T10:00:00-5:00 to a date and time.
//       2008-03-01 10:00 converted to 3/1/2008 6:00:00 PM Utc.
Imports System.Globalization

Module ParseDateExample
   Public Sub Main()
      Dim dateString As String  
      Dim culture As CultureInfo
      Dim styles As DateTimeStyles 
      Dim result As DateTime
      
      ' Parse a date and time with no styles.
      dateString = "03/01/2009 10:00 AM"
      culture = CultureInfo.CreateSpecificCulture("en-US")
      styles = DateTimeStyles.None
      Try
         result = DateTime.Parse(dateString, culture, styles)
         Console.WriteLine("{0} converted to {1} {2}.", _
                           dateString, result, result.Kind.ToString())
      Catch e As FormatException
         Console.WriteLine("Unable to convert {0} to a date and time.", dateString)
      End Try      
      
      ' Parse the same date and time with the AssumeLocal style.
      styles = DateTimeStyles.AssumeLocal
      Try
         result = DateTime.Parse(dateString, culture, styles)
         Console.WriteLine("{0} converted to {1} {2}.", _
                           dateString, result, result.Kind.ToString())
      Catch e As FormatException
         Console.WriteLine("Unable to convert {0} to a date and time.", dateString)
      End Try      
      
      ' Parse a date and time that is assumed to be local.
      ' This time is five hours behind UTC. The local system's time zone is 
      ' eight hours behind UTC.
      dateString = "2009/03/01T10:00:00-5:00"
      styles = DateTimeStyles.AssumeLocal
      Try
         result = DateTime.Parse(dateString, culture, styles)
         Console.WriteLine("{0} converted to {1} {2}.", _
                           dateString, result, result.Kind.ToString())
      Catch e As FormatException
         Console.WriteLine("Unable to convert {0} to a date and time.", dateString)
      End Try      
      
      ' Attempt to convert a string in improper ISO 8601 format.
      dateString = "03/01/2009T10:00:00-5:00"
      Try
         result = DateTime.Parse(dateString, culture, styles)
         Console.WriteLine("{0} converted to {1} {2}.", _
                           dateString, result, result.Kind.ToString())
      Catch e As FormatException
         Console.WriteLine("Unable to convert {0} to a date and time.", dateString)
      End Try      

      ' Assume a date and time string formatted for the fr-FR culture is the local 
      ' time and convert it to UTC.
      dateString = "2008-03-01 10:00"
      culture = CultureInfo.CreateSpecificCulture("fr-FR")
      styles = DateTimeStyles.AdjustToUniversal Or DateTimeStyles.AssumeLocal
      Try
         result = DateTime.Parse(dateString, culture, styles)
         Console.WriteLine("{0} converted to {1} {2}.", _
                           dateString, result, result.Kind.ToString())
      Catch e As FormatException
         Console.WriteLine("Unable to convert {0} to a date and time.", dateString)
      End Try      
   End Sub
End Module
'
' The example displays the following output to the console:
'       03/01/2009 10:00 AM converted to 3/1/2009 10:00:00 AM Unspecified.
'       03/01/2009 10:00 AM converted to 3/1/2009 10:00:00 AM Local.
'       2009/03/01T10:00:00-5:00 converted to 3/1/2009 7:00:00 AM Local.
'       Unable to convert 03/01/2009T10:00:00-5:00 to a date and time.
'       2008-03-01 10:00 converted to 3/1/2008 6:00:00 PM Utc.

Kommentarer

Den här metodens överlagring konverterar datum och tid i s och anger Kind egenskapen för det returnerade DateTime värdet enligt följande:

Om det Konvertering av tidszon Typegenskap
s innehåller ingen tidszonsinformation. Inga. DateTimeKind.Unspecified
s innehåller tidszonsinformation. Till tiden i den lokala tidszonen DateTimeKind.Local
s innehåller tidszonsinformation och styles innehåller DateTimeStyles.AdjustToUniversal flaggan. Till Coordinated Universal Time (UTC) DateTimeKind.Utc
s innehåller Z- eller GMT-tidszonsdesignatorn och styles innehåller DateTimeStyles.RoundtripKind. Inga. DateTimeKind.Utc

Se även

Gäller för