DateTime.Parse Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Převede řetězcovou reprezentaci data a času na ekvivalent DateTime.
Přetížení
Parse(String) |
Převede řetězcové vyjádření data a času na jeho DateTime ekvivalent pomocí konvencí aktuální jazykové verze. |
Parse(ReadOnlySpan<Char>, IFormatProvider) |
Parsuje rozsah znaků do hodnoty. |
Parse(String, IFormatProvider) |
Převede řetězcové vyjádření data a času na jeho DateTime ekvivalent pomocí informací o formátu specifickém pro jazykovou verzi. |
Parse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) |
Převede rozsah paměti, který obsahuje řetězcové vyjádření data a času na jeho DateTime ekvivalent pomocí informací o formátu specifické pro jazykovou verzi a stylu formátování. |
Parse(String, IFormatProvider, DateTimeStyles) |
Převede řetězcové vyjádření data a času na jeho DateTime ekvivalent pomocí informací o formátu specifické pro jazykovou verzi a stylu formátování. |
Příklady
Mnoho příkladů, které volají metodu DateTime.Parse
, jsou interspersovány v rámci Poznámky části tohoto článku a v dokumentaci pro jednotlivá přetížení DateTime.Parse
.
Poznámka
Některé příklady jazyka C# v tomto článku se spouštějí v Try.NET inline code runner a playground. Vyberte Spustit a spusťte příklad v interaktivním okně. Jakmile kód spustíte, můžete ho upravit a spustit upravený kód tak, že znovu vyberete Spustit. Upravený kód se buď spustí v interaktivním okně, nebo pokud kompilace selže, zobrazí se v interaktivním okně všechny chybové zprávy kompilátoru jazyka C#.
místní časové pásmoTry.NET inline code runner a playground je koordinovaný univerzální čas (UTC). To může mít vliv na chování a výstup příkladů, které ilustrují typy DateTime, DateTimeOffseta TimeZoneInfo typy a jejich členy.
Můžete si také stáhnout kompletní sadu příkladů DateTime.Parse
, které jsou součástí projektu .NET Core projazyka C#.
Poznámky
V této části:
- Jakou metodu zavolám?
- Řetězec k analýze
- parsování a kulturní konvence
- prvky analýzy a stylu
- návratovou hodnotu a DateTime.Kind
Jakou metodu zavolám?
K | Zavolat |
---|---|
Parsujte řetězec data a času pomocí konvencí aktuální jazykové verze. | přetížení Parse(String) |
Parsujte řetězec data a času pomocí konvencí konkrétní jazykové verze. | přetížení Parse(String, IFormatProvider) (viz Analýza a kulturní konvence) |
Parsujte řetězec data a času se speciálními prvky stylu (například prázdné znaky nebo prázdné znaky). | přetížení Parse(String, IFormatProvider, DateTimeStyles) |
Parsovat řetězec data a času, který musí být v určitém formátu. | DateTime.ParseExact nebo DateTime.TryParseExact |
Parsuje řetězec data a času a provede převod na utc nebo místní čas. | přetížení Parse(String, IFormatProvider, DateTimeStyles) |
Parsovat řetězec data a času bez zpracování výjimek. | metoda DateTime.TryParse |
Obnovení (odezva) hodnoty data a času vytvořené operací formátování | Předejte standardní formátovací řetězec "o" nebo "r" metodě ToString(String) a zavolejte Parse(String, IFormatProvider, DateTimeStyles) přetížení s DateTimeStyles.RoundtripKind |
Parsování řetězce data a času v pevném formátu napříč strojovými (a případně kulturními) hranicemi. | metoda DateTime.ParseExact nebo DateTime.TryParseExact |
Řetězec k analýze
Metoda Parse se pokusí převést řetězcovou reprezentaci hodnoty data a času na jeho DateTime ekvivalent. Pokusí se zcela analyzovat vstupní řetězec bez vyvolání výjimky FormatException.
Důležitý
Pokud operace analýzy selže z důvodu nerozpoznaného formátu řetězce, metoda Parse vyvolá FormatException, zatímco metoda TryParse vrátí false
. Vzhledem k tomu, že zpracování výjimek může být nákladné, měli byste použít Parse, pokud se očekává, že operace analýzy bude úspěšná, protože vstupní zdroj je důvěryhodný.
TryParse je vhodnější, pokud je pravděpodobné, že analýza selhání je pravděpodobná, zejména proto, že vstupní zdroj není důvěryhodný, nebo máte rozumné výchozí hodnoty pro nahrazení řetězců, které se úspěšně neanalyzují.
Řetězec, který se má analyzovat, může mít některou z následujících forem:
Řetězec s datem a časovou komponentou.
Řetězec s datem, ale žádnou součástí času. Pokud chybí časová komponenta, metoda předpokládá půlnoc 12:00. Pokud má komponenta kalendářních dat dvouciferný rok, převede se na rok na základě Calendar.TwoDigitYearMax aktuálního kalendáře aktuální jazykové verze nebo aktuálního kalendáře zadané jazykové verze (pokud použijete přetížení s argumentem
provider
bez hodnoty null).Řetězec s komponentou kalendářního data, která zahrnuje pouze měsíc a rok, ale bez komponenty dne. Metoda předpokládá první den v měsíci.
Řetězec s komponentou kalendářního data, která zahrnuje pouze měsíc a den, ale bez komponenty roku. Metoda předpokládá aktuální rok.
Řetězec s časem, ale žádnou součástí data. Metoda předpokládá aktuální datum, pokud nezavoláte přetížení Parse(String, IFormatProvider, DateTimeStyles) a zahrnete DateTimeStyles.NoCurrentDateDefault do argumentu
styles
, v takovém případě metoda předpokládá datum 1. ledna 0001.Řetězec s časovou komponentou, která obsahuje pouze hodinu a designátor AM/PM bez komponenty data. Metoda předpokládá aktuální datum a čas bez minut a sekund. Toto chování můžete změnit zavoláním přetížení Parse(String, IFormatProvider, DateTimeStyles) a zahrnutím DateTimeStyles.NoCurrentDateDefault do argumentu
styles
, v takovém případě metoda předpokládá datum 1. ledna 0001.Řetězec, který obsahuje informace o časovém pásmu a odpovídá normě ISO 8601. V následujících příkladech první řetězec určuje koordinovaný univerzální čas (UTC) a druhý určuje čas v časovém pásmu, které je sedm hodin dřívější než UTC:
"2008-11-01T19:35:00.000000Z" "2008-11-01T19:35:00.000000-07:00"
Řetězec, který obsahuje designátor GMT a odpovídá formátu RFC 1123; například:
"So, 01 Nov 2008 19:35:00 GMT"
Řetězec, který obsahuje datum a čas spolu s informacemi o posunu časového pásma; například:
"03/01/2009 05:42:00 -5:00"
Následující příklad parsuje řetězce v každém z těchto formátů pomocí konvencí formátování aktuální jazykové verze, což je v tomto případě en-US jazyková verze:
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
Pokud vstupní řetězec představuje přestupný den v přestupném roce v kalendáři používaném metodou analýzy (viz Parsování a kulturní konvence), metoda Parse úspěšně parsuje řetězec. Pokud vstupní řetězec představuje přestupný den v neskočném roce, metoda vyvolá FormatException.
Vzhledem k tomu, Parse metoda se pokusí parsovat řetězcovou reprezentaci data a času pomocí pravidel formátování aktuální nebo zadané jazykové verze, pokus o parsování řetězce napříč různými jazykovými verzemi může selhat. K analýze konkrétního formátu data a času v různých národních prostředích použijte jedno z přetížení metody DateTime.ParseExact a zadejte specifikátor formátu.
Analýza a kulturní konvence
Všechna přetížení metody Parse jsou citlivá na jazykovou verzi, pokud řetězec, který má být analyzován (který je reprezentován s
v následující tabulce) odpovídá vzoru ISO 8601. Operace analýzy používá informace o formátování v objektu DateTimeFormatInfo odvozené následujícím způsobem:
Důležitý
Éry v japonských kalendářích jsou založeny na vládě císaře, a proto se očekává, že se změní. Například 1. května 2019 označí začátek období Reiwa v JapaneseCalendar a JapaneseLunisolarCalendar. Taková změna éry ovlivňuje všechny aplikace, které tyto kalendáře používají. Další informace a určení, zda jsou vaše aplikace ovlivněny, najdete v tématu Zpracování nové éry v japonském kalendáři v .NET. Informace o testování aplikací v systémech Windows za účelem zajištění připravenosti na změnu éry najdete v tématu Příprava aplikace na japonskou změnu éry. Funkce v .NET, které podporují kalendáře s více obdobími a osvědčené postupy při práci s kalendáři, které podporují více období, najdete v tématu Práce s obdobími.
Pokud zavoláte | A provider je |
Informace o formátování jsou odvozeny od |
---|---|---|
Parse(String) | - | Aktuální jazyková verze (vlastnostDateTimeFormatInfo.CurrentInfo) |
Parse(String, IFormatProvider) nebo Parse(String, IFormatProvider, DateTimeStyles) | objekt DateTimeFormatInfo | Zadaný objekt DateTimeFormatInfo |
Parse(String, IFormatProvider) nebo Parse(String, IFormatProvider, DateTimeStyles) | null |
Aktuální jazyková verze (vlastnostDateTimeFormatInfo.CurrentInfo) |
Parse(String, IFormatProvider) nebo Parse(String, IFormatProvider, DateTimeStyles) | objekt CultureInfo | Vlastnost CultureInfo.DateTimeFormat |
Parse(String, IFormatProvider) nebo Parse(String, IFormatProvider, DateTimeStyles) | Vlastní implementace IFormatProvider | Metoda IFormatProvider.GetFormat |
Při formátování informací je odvozen z DateTimeFormatInfo objektu, DateTimeFormatInfo.Calendar vlastnost definuje kalendář použitý v operaci analýzy.
Pokud parsujete řetězec data a času pomocí objektu DateTimeFormatInfo s přizpůsobenými nastaveními, které se liší od standardní jazykové verze, použijte místo metody Parse metodu ParseExact ke zlepšení pravděpodobnosti úspěšného převodu. Nestandardní řetězec data a času může být složitý a obtížně parsovaný. Metoda Parse se pokusí analyzovat řetězec s několika implicitními vzory analýzy, z nichž všechny můžou selhat. Naproti tomu metoda ParseExact vyžaduje, abyste explicitně určili jeden nebo více přesných vzorců analýzy, které budou pravděpodobně úspěšné. Další informace najdete v části DateTimeFormatInfo a Dynamická data v tématu DateTimeFormatInfo.
Důležitý
Všimněte si, že konvence formátování pro určitou jazykovou verzi jsou dynamické a můžou se měnit. To znamená, že analýza operací, které závisí na konvencích formátování výchozí (aktuální) jazykové verze nebo které určují objekt IFormatProvider, který představuje jinou jazykovou verzi než invariantní jazykovou verzi, může neočekávaně selhat, pokud dojde k některé z následujících akcí:
- Data specifická pro jazykovou verzi se změnila mezi hlavními nebo podverzemi rozhraní .NET Framework nebo v důsledku aktualizace stávající verze rozhraní .NET Framework.
- Data specifická pro jazykovou verzi odrážejí uživatelské předvolby, které se můžou lišit od počítače po počítač nebo relaci až po relaci.
- Data specifická pro jazykovou verzi představují náhradní jazykovou verzi, která přepíše nastavení standardní jazykové verze nebo vlastní jazykové verze.
Chcete-li zabránit potížím při analýze dat a časových řetězců přidružených ke změnám v kulturních datech, můžete analyzovat řetězce data a času pomocí invariantní jazykové verze, nebo můžete volat ParseExact nebo TryParseExact metodu a určit přesný formát řetězce, který se má analyzovat. Pokud serializujete a deserializujete data data a času, můžete použít konvence formátování invariantní jazykové verze, nebo můžete serializovat a deserializovat hodnotu DateTime v binárním formátu.
Další informace najdete v části "Dynamická data jazykové verze" v tématu CultureInfo a v části Zachování hodnot DateTime v tématu DateTime.
Analýza a styl prvků
Všechna Parse přetížení ignorují počáteční, vnitřní nebo koncové prázdné znaky ve vstupním řetězci (které jsou reprezentovány s
v následující tabulce). Datum a čas je možné vytvořit závorkou s párem počátečních a koncových znaků NUMBER SIGN ("#", U+0023) a může být na konci s jedním nebo více znaky NULL (U+0000).
Kromě toho má přetížení Parse(String, IFormatProvider, DateTimeStyles) parametr styles
, který se skládá z jednoho nebo více členů DateTimeStyles výčtu. Tento parametr definuje, jak se mají interpretovat s
a jak by operace analýzy měla převést s
na datum a čas. Následující tabulka popisuje účinek každého člena DateTimeStyles na operaci analýzy.
DateTimeStyles – člen | Vliv na převod |
---|---|
AdjustToUniversal | Parsuje s a v případě potřeby ho převede na UTC následujícím způsobem:- Pokud s zahrnuje posun časového pásma nebo pokud s neobsahuje žádné informace o časovém pásmu, ale styles zahrnuje příznak AssumeLocal, metoda analyzuje řetězec, volá ToUniversalTime převést vrácenou hodnotu DateTime na UTC a nastaví Kind vlastnost na DateTimeKind.Utc.- Pokud s označuje, že představuje UTC, nebo pokud s neobsahuje informace o časovém pásmu, ale styles zahrnuje příznak AssumeUniversal, metoda analyzuje řetězec, neprovádí převod časového pásma na vrácenou hodnotu DateTime a nastaví Kind vlastnost na DateTimeKind.Utc.- Ve všech ostatních případech nemá příznak žádný vliv. |
AllowInnerWhite | Tato hodnota je ignorována. Vnitřní prázdné znaky jsou vždy povoleny v prvech data a času s . |
AllowLeadingWhite | Tato hodnota je ignorována. Počáteční prázdné znaky jsou vždy povoleny v prvech data a času s . |
AllowTrailingWhite | Tato hodnota je ignorována. Koncové prázdné znaky jsou vždy povoleny v prvech data a času s . |
AllowWhiteSpaces | Určuje, že s může obsahovat úvodní, vnitřní a koncové mezery. Toto je výchozí chování. Nelze jej přepsat zadáním více omezující DateTimeStyles výčtové hodnoty, například None. |
AssumeLocal | Určuje, že pokud s chybí informace o časovém pásmu, předpokládá se místní čas. Pokud není k dispozici příznak AdjustToUniversal, je vlastnost Kind vrácené hodnoty DateTime nastavena na DateTimeKind.Local. |
AssumeUniversal | Určuje, že pokud s neobsahují informace o časovém pásmu, předpokládá se UTC. Pokud není k dispozici příznak AdjustToUniversal, metoda převede vrácenou hodnotu DateTime z UTC na místní čas a nastaví jeho Kind vlastnost na DateTimeKind.Local. |
None | I když je tato hodnota platná, tato hodnota se ignoruje. |
RoundtripKind | U řetězců obsahujících informace o časovém pásmu se pokusí zabránit převodu řetězce data a času na hodnotu DateTime, která představuje místní čas s jeho vlastností Kind nastavenou na DateTimeKind.Local. Takový řetězec je obvykle vytvořen voláním metody DateTime.ToString(String) a pomocí specifikátoru standardního formátu "o", "r" nebo "u". |
Návratová hodnota a DateTime.Kind
Přetížení DateTime.Parse
vrací hodnotu DateTime, jejíž vlastnost Kind obsahuje informace o časovém pásmu. Může to znamenat, že čas je:
- Koordinovaný univerzální čas (System.DateTimeKind.Utc).
- Čas v místním časovém pásmu (System.DateTimeKind.Local).
- Čas v neznámém časovém pásmu (System.DateTimeKind.Unspecified).
Obecně platí, Parse metoda vrací DateTime objekt, jehož Kind vlastnost je DateTimeKind.Unspecified. Metoda Parse však může také provést převod časového pásma a nastavit hodnotu vlastnosti Kind odlišně v závislosti na hodnotách parametrů s
a styles
:
Když | Převod časového pásma | Kind – vlastnost |
---|---|---|
s obsahuje informace o časovém pásmu. |
Datum a čas se převedou na čas v místním časovém pásmu. | DateTimeKind.Local |
s obsahuje informace o časovém pásmu a styles obsahuje příznak AdjustToUniversal. |
Datum a čas se převedou na koordinovaný univerzální čas (UTC). | DateTimeKind.Utc |
s obsahuje návrh časového pásma Z nebo GMT a styles obsahuje příznak RoundtripKind. |
Datum a čas se interpretují jako UTC. | DateTimeKind.Utc |
Následující příklad převede řetězce kalendářních dat, které obsahují informace o časovém pásmu, na čas v místním časovém pásmu:
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
Hodnotu vlastnosti Kind data a času můžete zachovat také během operace formátování a analýzy pomocí příznaku DateTimeStyles.RoundtripKind. Následující příklad ukazuje, jak příznak RoundtripKind ovlivňuje operaci analýzy DateTime hodnot, které jsou převedeny na řetězce pomocí specifikátoru formátu "o", "r" nebo "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)
- Zdroj:
- DateTime.cs
- Zdroj:
- DateTime.cs
- Zdroj:
- DateTime.cs
Převede řetězcové vyjádření data a času na jeho DateTime ekvivalent pomocí konvencí aktuální jazykové verze.
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
Parametry
- s
- String
Řetězec, který obsahuje datum a čas pro převod. Další informace najdete v tématu Řetězec k analýze.
Návraty
Objekt, který odpovídá datu a času obsaženému v s
.
Výjimky
s
je null
.
s
neobsahuje platnou řetězcovou reprezentaci data a času.
Příklady
Následující příklad parsuje řetězcovou reprezentaci několika hodnot data a času podle:
Pomocí výchozího zprostředkovatele formátu, který poskytuje konvence formátování aktuální jazykové verze počítače použité k vytvoření ukázkového výstupu. Výstup z tohoto příkladu odráží konvence formátování jazykové verze en-US.
Použití výchozí hodnoty stylu, která je AllowWhiteSpaces.
Zpracovává FormatException výjimku, která se vyvolá, když se metoda pokusí parsovat řetězcovou reprezentaci data a času pomocí některých konvencí formátování jiné jazykové verze. Ukazuje také, jak úspěšně parsovat hodnotu data a času, která nepoužívá konvence formátování aktuální jazykové verze.
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.
Poznámky
Pokud s
obsahuje informace o časovém pásmu, vrátí tato metoda hodnotu DateTime, jejíž Kind vlastnost je DateTimeKind.Local a převede datum a čas v s
na místní čas. V opačném případě neprovádí převod časového pásma a vrátí hodnotu DateTime, jejíž vlastnost Kind je DateTimeKind.Unspecified.
Toto přetížení se pokusí analyzovat s
pomocí konvencí formátování aktuální jazykové verze. Aktuální jazyková verze je označena vlastností CurrentCulture. Chcete-li analyzovat řetězec pomocí konvencí formátování konkrétní jazykové verze, zavolejte Parse(String, IFormatProvider) nebo přetížení Parse(String, IFormatProvider, DateTimeStyles).
Toto přetížení se pokusí analyzovat s
pomocí stylu DateTimeStyles.AllowWhiteSpaces.
Viz také
- TryParse
- CultureInfo
- DateTimeFormatInfo
- parsování řetězců data a času v rozhraní .NET Framework
- standardní řetězce formátu data a času
- vlastní řetězce formátu data a času
Platí pro
Parse(ReadOnlySpan<Char>, IFormatProvider)
- Zdroj:
- DateTime.cs
- Zdroj:
- DateTime.cs
- Zdroj:
- DateTime.cs
Parsuje rozsah znaků do hodnoty.
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
Parametry
- s
- ReadOnlySpan<Char>
Rozsah znaků, které se mají analyzovat.
- provider
- IFormatProvider
Objekt, který poskytuje informace o formátování specifické pro jazykovou verzi o s
.
Návraty
Výsledek analýzy s
.
Implementuje
Platí pro
Parse(String, IFormatProvider)
- Zdroj:
- DateTime.cs
- Zdroj:
- DateTime.cs
- Zdroj:
- DateTime.cs
Převede řetězcové vyjádření data a času na jeho DateTime ekvivalent pomocí informací o formátu specifickém pro jazykovou verzi.
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
Parametry
- s
- String
Řetězec, který obsahuje datum a čas pro převod. Další informace najdete v tématu Řetězec k analýze.
- provider
- IFormatProvider
Objekt, který poskytuje informace o formátu specifické pro jazykovou verzi o s
. Viz parsování a kulturní konvence
Návraty
Objekt, který odpovídá datu a času obsaženému v s
podle provider
.
Implementuje
Výjimky
s
je null
.
s
neobsahuje platnou řetězcovou reprezentaci data a času.
Příklady
Následující příklad analyzuje pole řetězců kalendářních dat pomocí konvencí en-US, fr-FRa de-DE jazykové verze. Ukazuje, že řetězcové reprezentace jednoho data lze interpretovat odlišně v různých jazykových verzích.
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.
Poznámky
Pokud s
obsahuje informace o časovém pásmu, vrátí tato metoda hodnotu DateTime, jejíž Kind vlastnost je DateTimeKind.Local a převede datum a čas v s
na místní čas. V opačném případě neprovádí převod časového pásma a vrátí hodnotu DateTime, jejíž vlastnost Kind je DateTimeKind.Unspecified.
Toto přetížení se pokusí analyzovat s
pomocí stylu DateTimeStyles.AllowWhiteSpaces.
Viz také
- TryParse
- CultureInfo
- DateTimeFormatInfo
- parsování řetězců data a času v rozhraní .NET Framework
- standardní řetězce formátu data a času
- vlastní řetězce formátu data a času
Platí pro
Parse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles)
- Zdroj:
- DateTime.cs
- Zdroj:
- DateTime.cs
- Zdroj:
- DateTime.cs
Převede rozsah paměti, který obsahuje řetězcové vyjádření data a času na jeho DateTime ekvivalent pomocí informací o formátu specifické pro jazykovou verzi a stylu formátování.
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
Parametry
- s
- ReadOnlySpan<Char>
Rozsah paměti, který obsahuje řetězec k analýze. Další informace najdete v tématu Řetězec k analýze.
- provider
- IFormatProvider
Objekt, který poskytuje informace o formátu specifické pro jazykovou verzi o s
. Viz parsování a kulturní konvence
- styles
- DateTimeStyles
Bitová kombinace hodnot výčtu, která označuje prvky stylu, které mohou být přítomny v s
pro operaci analýzy, aby byla úspěšná, a která definuje, jak interpretovat parsované datum ve vztahu k aktuálnímu časovému pásmu nebo aktuálnímu datu. Typická hodnota pro zadání je None.
Návraty
Objekt, který je ekvivalentní datu a času obsaženému v s
, jak je určeno provider
a styles
.
Výjimky
s
neobsahuje platnou řetězcovou reprezentaci data a času.
styles
obsahuje neplatnou kombinaci hodnot DateTimeStyles. Například AssumeLocal i AssumeUniversal.
Platí pro
Parse(String, IFormatProvider, DateTimeStyles)
- Zdroj:
- DateTime.cs
- Zdroj:
- DateTime.cs
- Zdroj:
- DateTime.cs
Převede řetězcové vyjádření data a času na jeho DateTime ekvivalent pomocí informací o formátu specifické pro jazykovou verzi a stylu formátování.
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
Parametry
- s
- String
Řetězec, který obsahuje datum a čas pro převod. Další informace najdete v tématu Řetězec k analýze.
- provider
- IFormatProvider
Objekt, který poskytuje informace o formátování specifické pro jazykovou verzi o s
. Viz parsování a kulturní konvence
- styles
- DateTimeStyles
Bitová kombinace hodnot výčtu, která označuje prvky stylu, které mohou být přítomny v s
pro operaci analýzy, aby byla úspěšná, a která definuje, jak interpretovat parsované datum ve vztahu k aktuálnímu časovému pásmu nebo aktuálnímu datu. Typická hodnota pro zadání je None.
Návraty
Objekt, který je ekvivalentní datu a času obsaženému v s
, jak je určeno provider
a styles
.
Výjimky
s
je null
.
s
neobsahuje platnou řetězcovou reprezentaci data a času.
styles
obsahuje neplatnou kombinaci hodnot DateTimeStyles. Například AssumeLocal i AssumeUniversal.
Příklady
Následující příklad ukazuje Parse(String, IFormatProvider, DateTimeStyles) metoda a zobrazí hodnotu Kind vlastnost výsledné DateTime hodnoty.
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.
Poznámky
Toto přetížení metody převede datum a čas v s
a nastaví Kind vlastnost vrácené DateTime hodnoty následujícím způsobem:
Když | Převod časového pásma | Kind – vlastnost |
---|---|---|
s neobsahuje žádné informace o časovém pásmu. |
Žádný. | DateTimeKind.Unspecified |
s obsahuje informace o časovém pásmu. |
Do času v místním časovém pásmu | DateTimeKind.Local |
s obsahuje informace o časovém pásmu a styles obsahuje příznak DateTimeStyles.AdjustToUniversal. |
Do koordinovaného univerzálního času (UTC) | DateTimeKind.Utc |
s obsahuje návrh časového pásma Z nebo GMT a styles obsahuje DateTimeStyles.RoundtripKind. |
Žádný. | DateTimeKind.Utc |
Viz také
- TryParse
- CultureInfo
- DateTimeFormatInfo
- parsování řetězců data a času v rozhraní .NET Framework
- standardní řetězce formátu data a času
- vlastní řetězce formátu data a času
- Postupy: Hodnoty data a času odezvy