DateTime.Parse Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
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?
- Strängen som ska parsas
- Parsning och kulturella konventioner
- Parsnings- och formatelement
- Returvärdet och DateTime.Kind
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
stylesargumentet, 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
stylesi 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:
- Samordnad universell tid (System.DateTimeKind.Utc).
- Tiden i den lokala tidszonen (System.DateTimeKind.Local).
- Tiden i en okänd tidszon (System.DateTimeKind.Unspecified).
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
- TryParse
- CultureInfo
- DateTimeFormatInfo
- Parsing date and time strings in the .NET Framework
- Standardformatsträngar för datum och tid
- Anpassade formatsträngar för datum och tid
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
- TryParse
- CultureInfo
- DateTimeFormatInfo
- Parsing date and time strings in the .NET Framework
- Standardformatsträngar för datum och tid
- Anpassade formatsträngar för datum och tid
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
- TryParse
- CultureInfo
- DateTimeFormatInfo
- Parsing date and time strings in the .NET Framework
- Standardformatsträngar för datum och tid
- Anpassade formatsträngar för datum och tid
- Anvisningar: Datum- och tidsvärden för tur och retur