DateTime Struktura

Definice

Představuje okamžitý čas, obvykle vyjádřený jako datum a denní dobu.Represents an instant in time, typically expressed as a date and time of day.

public value class DateTime : IComparable, IComparable<DateTime>, IConvertible, IEquatable<DateTime>, IFormattable, System::Runtime::Serialization::ISerializable
[System.Serializable]
public struct DateTime : IComparable, IComparable<DateTime>, IConvertible, IEquatable<DateTime>, IFormattable, System.Runtime.Serialization.ISerializable
type DateTime = struct
    interface IFormattable
    interface IConvertible
    interface ISerializable
Public Structure DateTime
Implements IComparable, IComparable(Of DateTime), IConvertible, IEquatable(Of DateTime), IFormattable, ISerializable
Dědičnost
DateTime
Atributy
Implementuje

Poznámky

Důležité

Větší počet období v japonské kalendářích jsou založené na císaře a proto se neočekává změna.Eras in the Japanese calendars are based on the emperor's reign and are therefore expected to change. Například 1. května 2019 označené začátku období Reiwa ve JapaneseCalendar a JapaneseLunisolarCalendar.For example, May 1, 2019 marked the beginning of the Reiwa era in the JapaneseCalendar and JapaneseLunisolarCalendar. Tuto změnu období ovlivňuje všechny aplikace, které používají tyto kalendáře.Such a change of era affects all applications that use these calendars. Zobrazit zpracování do nové éry v japonské kalendáře v rozhraní .NET Další informace a na zjištění, zda jsou vliv na vaše aplikace.See Handling a new era in the Japanese calendar in .NET for more information and to determine whether your applications are affected. Zobrazit Příprava aplikace pro změnu japonské období informace o testování aplikací v systémech Windows pro zajištění jejich připravenosti změna éry.See Prepare your application for the Japanese era change for information on testing your applications on Windows systems to ensure their readiness for the era change. Zobrazit práce s obdobími pro funkce v rozhraní .NET, které podporují kalendářích s obdobími více a osvědčené postupy při práci s kalendáře, které podporují větší počet období.See Working with eras for features in .NET that support calendars with multiple eras and for best practices when working with calendars that support multiple eras.

Poznámka

Některé C# spuštění příkladů v tomto článku v Try.NET runner a playground vloženého kódu.Some C# examples in this article run in the Try.NET inline code runner and playground. Vyberte spustit tlačítko spustit příklad v interaktivním okně.Select the Run button to run an example in an interactive window. Jakmile se při spuštění kódu, můžete upravit a spustit upravený kód tak, že vyberete spustit znovu.Once you execute the code, you can modify it and run the modified code by selecting Run again. Upravené kód je buď spuštěn v interaktivním okně, nebo pokud kompilace se nezdaří, interaktivní okno zobrazuje všechny jazyka C# kompilátoru chybové zprávy.The modified code either runs in the interactive window or, if compilation fails, the interactive window displays all C# compiler error messages.

Místní časové pásmo z Try.NET vložený kód spouštěče a playground je koordinovaný světový čas nebo čas UTC.The local time zone of the Try.NET inline code runner and playground is Coordinated Universal Time, or UTC. To může mít vliv chování a výstup příklady znázorňující, DateTime, DateTimeOffset, a TimeZoneInfo typů a jejich členy.This may affect the behavior and the output of examples that illustrate the DateTime, DateTimeOffset, and TimeZoneInfo types and their members.

Tento článek obsahuje několik příkladů použití DateTime typu:This article includes several examples that use the DateTime type:

Příklady inicializaceInitialization Examples

Formátování DateTime objektů jako řetězcůFormatting DateTime objects as strings

Analýza řetězců jako DateTime objektůParsing strings as DateTime objects

DateTimerozhodnutíDateTime resolution

Jazyková verze a kalendářeCulture and calendars

UchováníPersistence

Tato část obsahuje témata pro mnoho běžných použití DateTime struktury:This section contains topics for many common uses of the DateTime struct:

Typ DateTime hodnoty představuje datum a časy s hodnotami od 00:00:00 (půlnoc), 1. ledna 0001 Anno Domini (běžný životní postup) až 11:59:59 hodin, 31. prosince, 9999 n.l.The DateTime value type represents dates and times with values ranging from 00:00:00 (midnight), January 1, 0001 Anno Domini (Common Era) through 11:59:59 P.M., December 31, 9999 A.D. 0001 v gregoriánském kalendáři.(C.E.) in the Gregorian calendar.

Hodnoty času se měří v 100 jednotkách, které se nazývají osové.Time values are measured in 100-nanosecond units called ticks. Konkrétní datum je počet taktů od 12:00 půlnoci 1. ledna 0001 N.L.A particular date is the number of ticks since 12:00 midnight, January 1, 0001 A.D. 0001 GregorianCalendar v kalendáři.(C.E.) in the GregorianCalendar calendar. Číslo vylučuje takty, které by byly přidány pomocí přestupných sekund.The number excludes ticks that would be added by leap seconds. Například hodnota taktů 31241376000000000L představuje datum pátek, leden 01, 0100 12:00:00 půlnoci.For example, a ticks value of 31241376000000000L represents the date Friday, January 01, 0100 12:00:00 midnight. DateTime Hodnota je vždy vyjádřena v kontextu explicitního nebo výchozího kalendáře.A DateTime value is always expressed in the context of an explicit or default calendar.

Poznámka

Pokud pracujete s hodnotou osové hodnoty, kterou chcete převést na jiný časový interval, například minuty TimeSpan.TicksPerDaynebo sekundy, použijte k provedení převodu konstantu, TimeSpan.TicksPerHour, TimeSpan.TicksPerMinute, TimeSpan.TicksPerSecondnebo TimeSpan.TicksPerMillisecond .If you are working with a ticks value that you want to convert to some other time interval, such as minutes or seconds, you should use the TimeSpan.TicksPerDay, TimeSpan.TicksPerHour, TimeSpan.TicksPerMinute, TimeSpan.TicksPerSecond, or TimeSpan.TicksPerMillisecond constant to perform the conversion. Například chcete-li přidat počet sekund reprezentovaných zadaným počtem tiků do Second komponenty DateTime hodnoty, můžete použít výraz dateValue.Second + nTicks/Timespan.TicksPerSecond.For example, to add the number of seconds represented by a specified number of ticks to the Second component of a DateTime value, you can use the expression dateValue.Second + nTicks/Timespan.TicksPerSecond.

Zdroj pro celou sadu příkladů z tohoto článku můžete zobrazit v Visual Basic nebo C# v úložišti Docs na GitHubu.You can view the source for the entire set of examples from this article in either Visual Basic or C# from the docs repository on GitHub.

Poznámka

Alternativou ke DateTime struktuře pro práci s hodnotami data a času v určitých časových pásmech DateTimeOffset je struktura.An alternative to the DateTime structure for working with date and time values in particular time zones is the DateTimeOffset structure. Struktura ukládá informace o datu a čase do soukromého DateTime pole a počet minut, o které se toto datum a čas liší od času UTC v soukromém Int16 poli. DateTimeOffsetThe DateTimeOffset structure stores date and time information in a private DateTime field and the number of minutes by which that date and time differs from UTC in a private Int16 field. To umožňuje DateTimeOffset , aby hodnota odrážela čas v konkrétním časovém pásmu, DateTime zatímco hodnota může jednoznačně odrážet jenom čas UTC a místní časové pásmo.This makes it possible for a DateTimeOffset value to reflect the time in a particular time zone, whereas a DateTime value can unambiguously reflect only UTC and the local time zone's time. Diskuzi o tom, kdy použít DateTime strukturu DateTimeOffset nebo strukturu při práci s hodnotami data a času, najdete v tématu Volba mezi DateTime, DateTimeOffset, TimeSpan a TimeZoneInfo.For a discussion about when to use the DateTime structure or the DateTimeOffset structure when working with date and time values, see Choosing Between DateTime, DateTimeOffset, TimeSpan, and TimeZoneInfo.

Inicializace objektu DateTimeInitializing a DateTime object

Počáteční hodnotu můžete přiřadit nové DateTime hodnotě mnoha různými způsoby:You can assign an initial value to a new DateTime value in many different ways:

  • Volání konstruktoru, buď v jednom, kde zadáte argumenty pro hodnoty, nebo použijte implicitní konstruktor bez parametrů.Calling a constructor, either one where you specify arguments for values, or use the implicit parameterless constructor.
  • DateTime Přiřazení k návratové hodnotě vlastnosti nebo metody.Assigning a DateTime to the return value of a property or method.
  • DateTime Analýza hodnoty z řetězcové reprezentace.Parsing a DateTime value from its string representation.
  • Vytvoření instance a DateTimepomocí funkcí jazyka specifického pro Visual Basic.Using Visual Basic-specific language features to instantiate a DateTime.

Následující fragmenty kódu ukazují příklady každé z nich:The following code snippets show examples of each:

Vyvolat konstruktoryInvoke Constructors

Zavoláte všechna přetížení DateTime konstruktoru, která určují prvky hodnoty data a času (například rok, měsíc a den nebo počet tiků).You call any of the overloads of the DateTime constructor that specify elements of the date and time value (such as the year, month, and day, or the number of ticks). Následující kód vytvoří konkrétní datum pomocí DateTime konstruktoru, který určuje rok, měsíc, den, hodinu, minutu a sekundu.The following code creates a specific date using the DateTime constructor specifying the year, month, day, hour, minute, and second.

[!code-vbSystem.DateTime.Instantiation#1][!code-vbSystem.DateTime.Instantiation#1]

var date1 = new DateTime(2008, 5, 1, 8, 30, 52);
Console.WriteLine(date1);

Vyvoláte DateTime implicitní konstruktor bez parametrů struktury, pokud DateTime chcete inicializovat jeho výchozí hodnotu.You invoke the DateTime structure's implicit parameterless constructor when you want a DateTime initialized to its default value. (Podrobnosti o implicitním konstruktoru bez parametrů typu hodnoty naleznete v tématu typy hodnot.) Některé kompilátory také podporují deklaraci DateTime hodnoty bez explicitního přiřazení hodnoty.(For details on the implicit parameterless constructor of a value type, see Value Types.) Some compilers also support declaring a DateTime value without explicitly assigning a value to it. Vytvoření hodnoty bez explicitní inicializace také má za následek výchozí hodnotu.Creating a value without an explicit initialization also results in the default value. Následující příklad ilustruje DateTime implicitní konstruktor bez parametrů v C# a Visual Basic a také DateTime deklaraci bez přiřazení v Visual Basic.The following example illustrates the DateTime implicit parameterless constructor in C# and Visual Basic, as well as a DateTime declaration without assignment in Visual Basic.

[!code-vbSystem.DateTime.Instantiation#5][!code-vbSystem.DateTime.Instantiation#5]

var dat1 = new DateTime();
// The following method call displays 1/1/0001 12:00:00 AM.
Console.WriteLine(dat1.ToString(System.Globalization.CultureInfo.InvariantCulture));
// The following method call displays True.
Console.WriteLine(dat1.Equals(DateTime.MinValue));
Přiřazení vypočítané hodnotyAssigning a computed value

DateTime Objektu můžete přiřadit hodnotu data a času, kterou vrátila vlastnost nebo metoda.You can assign the DateTime object a date and time value returned by a property or method. Následující příklad přiřadí aktuální datum a čas, aktuální koordinovaný světový čas (UTC) datum a čas a aktuální datum na tři nové DateTime proměnné.The following example assigns the current date and time, the current Coordinated Universal Time (UTC) date and time, and the current date to three new DateTime variables.

[!code-vbSystem.DateTime.Instantiation#3][!code-vbSystem.DateTime.Instantiation#3]

DateTime date1 = DateTime.Now;
DateTime date2 = DateTime.UtcNow;
DateTime date3 = DateTime.Today;
Analýza řetězce, který představuje hodnotu DateTimeParsing a string that represents a DateTime

Metody Parse, ParseExact, TryParsea všechnypřevádějířetězecnajehoekvivalentníhodnotudataačasu.TryParseExactThe Parse, ParseExact, TryParse, and TryParseExact methods all convert a string to its equivalent date and time value. Následující příklady používají Parse metody a ParseExact k analýze řetězce DateTime a jeho převodu na hodnotu.The following examples use the Parse and ParseExact methods to parse a string and convert it to a DateTime value. Druhý formát používá formulář podporovaný standardem ISO 8601 pro znázornění data a času ve formátu řetězce.The second format uses a form supported by the ISO 8601 standard for a representing date and time in string format. Tato standardní reprezentace se často používá k přenosu informací o datu ve webových službách.This standard representation is often used to transfer date information in web services.

[!code-vbSystem.DateTime.Instantiation#4][!code-vbSystem.DateTime.Instantiation#4]

var dateString = "5/1/2008 8:30:52 AM";
DateTime date1 = DateTime.Parse(dateString,
                          System.Globalization.CultureInfo.InvariantCulture);
var iso8601String = "20080501T08:30:52Z";
DateTime dateISO8602 = DateTime.ParseExact(iso8601String, "yyyyMMddTHH:mm:ssZ",
                                System.Globalization.CultureInfo.InvariantCulture);

Metody TryParse DateTime a TryParseExact označují, zda je řetězec platným znázorněním hodnoty, a pokud je, provádí převod.The TryParse and TryParseExact methods indicate whether a string is a valid representation of a DateTime value and, if it is, performs the conversion.

Syntaxe pro Visual Basic pro konkrétní jazykLanguage-specific syntax for Visual Basic

Následující příkaz Visual Basic Inicializuje novou DateTime hodnotu.The following Visual Basic statement initializes a new DateTime value.

[!code-vbSystem.DateTime.Instantiation#2][!code-vbSystem.DateTime.Instantiation#2]

Hodnoty DateTime a jejich reprezentace řetězcůDateTime values and their string representations

Interně se DateTime všechny hodnoty reprezentují jako počet taktů (počet intervalů 100 – nanosekund), které uplynuly od 12:00:00 půlnoci 1. ledna 0001.Internally, all DateTime values are represented as the number of ticks (the number of 100-nanosecond intervals) that have elapsed since 12:00:00 midnight, January 1, 0001. Skutečná DateTime hodnota je nezávislá na způsobu, jakým se tato hodnota zobrazuje, když se zobrazí.The actual DateTime value is independent of the way in which that value appears when displayed. Vzhled DateTime hodnoty je výsledkem operace formátování, která převede hodnotu na její řetězcovou reprezentaci.The appearance of a DateTime value is the result of a formatting operation that converts a value to its string representation.

Vzhled hodnot data a času závisí na jazykové verzi, mezinárodním standardech, požadavcích na aplikaci a na osobním předvolbách.The appearance of date and time values is dependent on culture, international standards, application requirements, and personal preference. Struktura nabízí flexibilitu při formátování hodnot data a času prostřednictvím přetížení ToString. DateTimeThe DateTime structure offers flexibility in formatting date and time values through overloads of ToString. Výchozí DateTime.ToString() metoda vrátí řetězcovou reprezentaci hodnoty data a času pomocí vzoru krátkého data a dlouhého času aktuální jazykové verze.The default DateTime.ToString() method returns the string representation of a date and time value using the current culture's short date and long time pattern. Následující příklad používá výchozí DateTime.ToString() metodu.The following example uses the default DateTime.ToString() method. Zobrazuje datum a čas pomocí vzoru krátkého data a dlouhého času pro aktuální jazykovou verzi.It displays the date and time using the short date and long time pattern for the current culture. Jazyková verze en-US je aktuální jazyková verze v počítači, na kterém byl spuštěný příklad.The en-US culture is the current culture on the computer on which the example was run.

[!code-csharpSystem.DateTime.Formatting#1][!code-csharpSystem.DateTime.Formatting#1]

Dim date1 As Date = #3/1/2008 7:00AM#
Console.WriteLine(date1.ToString())
' For en-US culture, displays 3/1/2008 7:00:00 AM

Je možné, že budete muset formátovat data v konkrétní jazykové verzi, aby podporovala webové scénáře, kde server může být v jiné jazykové verzi od klienta.You may need to format dates in a specific culture to support web scenarios where the server may be in a different culture from the client. Jazykové verze lze zadat pomocí DateTime.ToString(IFormatProvider) metody pro vytvoření krátkého data a dlouhého času v konkrétní jazykové verzi.You specify the culture using the DateTime.ToString(IFormatProvider) method to create the short date and long time representation in a specific culture. Následující příklad používá DateTime.ToString(IFormatProvider) metodu k zobrazení data a času pomocí vzoru krátkého data a dlouhého času pro jazykovou verzi fr-fr.The following example uses the DateTime.ToString(IFormatProvider) method to display the date and time using the short date and long time pattern for the fr-FR culture.

[!code-csharp-interactiveSystem.DateTime.Formatting#2][!code-csharp-interactiveSystem.DateTime.Formatting#2]

Dim date1 As Date = #3/1/2008 7:00AM#
Console.WriteLine(date1.ToString(System.Globalization.CultureInfo.CreateSpecificCulture("fr-FR")))
' Displays 01/03/2008 07:00:00

Jiné aplikace mohou vyžadovat jiné řetězcové reprezentace data.Other applications may require different string representations of a date. DateTime.ToString(String) Metoda vrátí řetězcovou reprezentaci definovanou specifikátorem standardního nebo vlastního formátu pomocí formátovacích úmluv aktuální jazykové verze.The DateTime.ToString(String) method returns the string representation defined by a standard or custom format specifier using the formatting conventions of the current culture. Následující příklad používá DateTime.ToString(String) metodu k zobrazení vzoru úplného data a času pro jazykovou verzi en-US, aktuální jazykovou verzi v počítači, na kterém byl tento příklad spuštěn.The following example uses the DateTime.ToString(String) method to display the full date and time pattern for the en-US culture, the current culture on the computer on which the example was run.

[!code-csharpSystem.DateTime.Formatting#3][!code-csharpSystem.DateTime.Formatting#3]

Dim date1 As Date = #3/1/2008 7:00AM#
Console.WriteLine(date1.ToString("F"))
' Displays Saturday, March 01, 2008 7:00:00 AM

Nakonec můžete zadat jak jazykovou verzi, tak formát pomocí DateTime.ToString(String, IFormatProvider) metody.Finally, you can specify both the culture and the format using the DateTime.ToString(String, IFormatProvider) method. Následující příklad používá DateTime.ToString(String, IFormatProvider) metodu k zobrazení vzoru úplného data a času pro jazykovou verzi fr-fr.The following example uses the DateTime.ToString(String, IFormatProvider) method to display the full date and time pattern for the fr-FR culture.

[!code-csharp-interactiveSystem.DateTime.Formatting#4][!code-csharp-interactiveSystem.DateTime.Formatting#4]

Dim date1 As Date = #3/1/2008 7:00AM#
Console.WriteLine(date1.ToString("F", New System.Globalization.CultureInfo("fr-FR")))
' Displays samedi 1 mars 2008 07:00:00

DateTime.ToString(String) Přetížení lze také použít s vlastním formátovacím řetězcem pro určení dalších formátů.The DateTime.ToString(String) overload can also be used with a custom format string to specify other formats. Následující příklad ukazuje, jak formátovat řetězec pomocí standardního formátu ISO 8601 často používaného pro webové služby.The following example shows how to format a string using the ISO 8601 standard format often used for web services. Formát ISO 8601 nemá odpovídající standardní řetězec formátu.The Iso 8601 format does not have a corresponding standard format string.

[!code-csharp-interactiveSystem.DateTime.Formatting#5][!code-csharp-interactiveSystem.DateTime.Formatting#5]

Dim date1 As Date = #3/1/2008 7:00AM#
Console.WriteLine(date1.ToString("yyyyMMddTHH:mm:ssZ"))
' Displays 20080301T07:00:00Z

Další informace o formátování DateTime hodnot naleznete v tématu Standardní řetězce formátu data a času a Vlastní řetězce formátu data a času.For more information about formatting DateTime values, see Standard Date and Time Format Strings and Custom Date and Time Format Strings.

Analýza hodnot DateTime z řetězcůParsing DateTime values from strings

Analýza převede řetězcové vyjádření data a času na DateTime hodnotu.Parsing converts the string representation of a date and time to a DateTime value. Řetězce data a času mají typicky v aplikacích dvě různá použití:Typically, date and time strings have two different usages in applications:

  • Datum a čas pobírají různé formy a odráží konvence buď aktuální jazykové verze, nebo konkrétní jazykové verze.A date and time takes a variety of forms and reflects the conventions of either the current culture or a specific culture. Například aplikace umožňuje uživateli, jehož aktuální jazyková verze je en-US, zadat hodnotu data jako "12/15/2013" nebo "15. prosince 2013".For example, an application allows a user whose current culture is en-US to input a date value as "12/15/2013" or "December 15, 2013". Umožňuje uživateli, jehož aktuální jazyková verze je en-GB pro zadání hodnoty data jako "15/12/2013" nebo "15. prosince 2013".It allows a user whose current culture is en-gb to input a date value as "15/12/2013" or "15 December 2013."

  • Datum a čas jsou reprezentovány v předdefinovaném formátu.A date and time is represented in a predefined format. Například aplikace serializace datum jako "20130103" nezávisle na jazykové verzi, na které je aplikace spuštěná.For example, an application serializes a date as "20130103" independently of the culture on which the app is running. Aplikace může vyžadovat zadání dat v krátkém formátu data aktuální jazykové verze.An application may require dates be input in the current culture's short date format.

Použijte Parse metodu nebo TryParse pro převod řetězce z jednoho z běžných formátů data a času používané jazykovou verzí na DateTime hodnotu.You use the Parse or TryParse method to convert a string from one of the common date and time formats used by a culture to a DateTime value. Následující příklad ukazuje, jak lze použít TryParse k převodu řetězců data v různých formátech specifických DateTime pro jazykovou verzi na hodnotu.The following example shows how you can use TryParse to convert date strings in different culture-specific formats to a DateTime value. Změní aktuální jazykovou verzi na angličtinu (Velká Británie) a volá GetDateTimeFormats() metodu pro generování pole řetězců data a času.It changes the current culture to English (Great Britain) and calls the GetDateTimeFormats() method to generate an array of date and time strings. Pak předá každý prvek v poli TryParse metodě.It then passes each element in the array to the TryParse method. Výstup z příkladu ukazuje, že metoda analýzy byla schopna úspěšně převést každý řetězec data a času specifický pro jazykovou verzi.The output from the example shows the parsing method was able to successfully convert each of the culture-specific date and time strings.

[!code-csharp-interactiveSystem.DateTime.Parsing#1][!code-csharp-interactiveSystem.DateTime.Parsing#1]

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB")

Dim date1 As New DateTime(2013, 6, 1, 12, 32, 30)
Dim badFormats As New List(Of String)

Console.WriteLine($"{"Date String",-37} {"Date",-19}")
Console.WriteLine()
For Each dateString As String In date1.GetDateTimeFormats()
    Dim parsedDate As DateTime
    If DateTime.TryParse(dateString, parsedDate) Then
        Console.WriteLine($"{dateString,-37} {DateTime.Parse(dateString),-19:g}")
    Else
        badFormats.Add(dateString)
    End If
Next

' Display strings that could not be parsed.
If badFormats.Count > 0 Then
    Console.WriteLine()
    Console.WriteLine("Strings that could not be parsed: ")
    For Each badFormat In badFormats
        Console.WriteLine($"   {badFormat}")
    Next
End If
' The example displays the following output:
'       Date String                           Date               
'       
'       01/06/2013                            01/06/2013 00:00:00
'       01/06/13                              01/06/2013 00:00:00
'       1/6/13                                01/06/2013 00:00:00
'       1.6.13                                01/06/2013 00:00:00
'       2013-06-01                            01/06/2013 00:00:00
'       01 June 2013                          01/06/2013 00:00:00
'       1 June 2013                           01/06/2013 00:00:00
'       01 June 2013 12:32                    01/06/2013 12:32:00
'       01 June 2013 12:32                    01/06/2013 12:32:00
'       01 June 2013 12:32 PM                 01/06/2013 12:32:00
'       01 June 2013 12:32 PM                 01/06/2013 12:32:00
'       1 June 2013 12:32                     01/06/2013 12:32:00
'       1 June 2013 12:32                     01/06/2013 12:32:00
'       1 June 2013 12:32 PM                  01/06/2013 12:32:00
'       1 June 2013 12:32 PM                  01/06/2013 12:32:00
'       01 June 2013 12:32:30                 01/06/2013 12:32:30
'       01 June 2013 12:32:30                 01/06/2013 12:32:30
'       01 June 2013 12:32:30 PM              01/06/2013 12:32:30
'       01 June 2013 12:32:30 PM              01/06/2013 12:32:30
'       1 June 2013 12:32:30                  01/06/2013 12:32:30
'       1 June 2013 12:32:30                  01/06/2013 12:32:30
'       1 June 2013 12:32:30 PM               01/06/2013 12:32:30
'       1 June 2013 12:32:30 PM               01/06/2013 12:32:30
'       01/06/2013 12:32                      01/06/2013 12:32:00
'       01/06/2013 12:32                      01/06/2013 12:32:00
'       01/06/2013 12:32 PM                   01/06/2013 12:32:00
'       01/06/2013 12:32 PM                   01/06/2013 12:32:00
'       01/06/13 12:32                        01/06/2013 12:32:00
'       01/06/13 12:32                        01/06/2013 12:32:00
'       01/06/13 12:32 PM                     01/06/2013 12:32:00
'       01/06/13 12:32 PM                     01/06/2013 12:32:00
'       1/6/13 12:32                          01/06/2013 12:32:00
'       1/6/13 12:32                          01/06/2013 12:32:00
'       1/6/13 12:32 PM                       01/06/2013 12:32:00
'       1/6/13 12:32 PM                       01/06/2013 12:32:00
'       1.6.13 12:32                          01/06/2013 12:32:00
'       1.6.13 12:32                          01/06/2013 12:32:00
'       1.6.13 12:32 PM                       01/06/2013 12:32:00
'       1.6.13 12:32 PM                       01/06/2013 12:32:00
'       2013-06-01 12:32                      01/06/2013 12:32:00
'       2013-06-01 12:32                      01/06/2013 12:32:00
'       2013-06-01 12:32 PM                   01/06/2013 12:32:00
'       2013-06-01 12:32 PM                   01/06/2013 12:32:00
'       01/06/2013 12:32:30                   01/06/2013 12:32:30
'       01/06/2013 12:32:30                   01/06/2013 12:32:30
'       01/06/2013 12:32:30 PM                01/06/2013 12:32:30
'       01/06/2013 12:32:30 PM                01/06/2013 12:32:30
'       01/06/13 12:32:30                     01/06/2013 12:32:30
'       01/06/13 12:32:30                     01/06/2013 12:32:30
'       01/06/13 12:32:30 PM                  01/06/2013 12:32:30
'       01/06/13 12:32:30 PM                  01/06/2013 12:32:30
'       1/6/13 12:32:30                       01/06/2013 12:32:30
'       1/6/13 12:32:30                       01/06/2013 12:32:30
'       1/6/13 12:32:30 PM                    01/06/2013 12:32:30
'       1/6/13 12:32:30 PM                    01/06/2013 12:32:30
'       1.6.13 12:32:30                       01/06/2013 12:32:30
'       1.6.13 12:32:30                       01/06/2013 12:32:30
'       1.6.13 12:32:30 PM                    01/06/2013 12:32:30
'       1.6.13 12:32:30 PM                    01/06/2013 12:32:30
'       2013-06-01 12:32:30                   01/06/2013 12:32:30
'       2013-06-01 12:32:30                   01/06/2013 12:32:30
'       2013-06-01 12:32:30 PM                01/06/2013 12:32:30
'       2013-06-01 12:32:30 PM                01/06/2013 12:32:30
'       01 June                               01/06/2013 00:00:00
'       01 June                               01/06/2013 00:00:00
'       2013-06-01T12:32:30.0000000           01/06/2013 12:32:30
'       2013-06-01T12:32:30.0000000           01/06/2013 12:32:30
'       Sat, 01 Jun 2013 12:32:30 GMT         01/06/2013 05:32:30
'       Sat, 01 Jun 2013 12:32:30 GMT         01/06/2013 05:32:30
'       2013-06-01T12:32:30                   01/06/2013 12:32:30
'       12:32                                 22/04/2013 12:32:00
'       12:32                                 22/04/2013 12:32:00
'       12:32 PM                              22/04/2013 12:32:00
'       12:32 PM                              22/04/2013 12:32:00
'       12:32:30                              22/04/2013 12:32:30
'       12:32:30                              22/04/2013 12:32:30
'       12:32:30 PM                           22/04/2013 12:32:30
'       12:32:30 PM                           22/04/2013 12:32:30
'       2013-06-01 12:32:30Z                  01/06/2013 05:32:30
'       01 June 2013 19:32:30                 01/06/2013 19:32:30
'       01 June 2013 19:32:30                 01/06/2013 19:32:30
'       01 June 2013 07:32:30 PM              01/06/2013 19:32:30
'       01 June 2013 7:32:30 PM               01/06/2013 19:32:30
'       1 June 2013 19:32:30                  01/06/2013 19:32:30
'       1 June 2013 19:32:30                  01/06/2013 19:32:30
'       1 June 2013 07:32:30 PM               01/06/2013 19:32:30
'       1 June 2013 7:32:30 PM                01/06/2013 19:32:30
'       June 2013                             01/06/2013 00:00:00
'       June 2013                             01/06/2013 00:00:00

Použijte ParseExact metody a TryParseExact k převodu řetězce, který musí odpovídat určitému DateTime formátu nebo formátu na hodnotu.You use the ParseExact and TryParseExact methods to convert a string that must match a particular format or formats to a DateTime value. Zadejte jeden nebo více řetězců formátu data a času jako parametr metody analýzy.You specify one or more date and time format strings as a parameter to the parsing method. Následující příklad používá TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) metodu pro převod řetězců, které musí být ve formátu "RRRRMMDD" nebo "HHmmss" formátu na DateTime hodnoty.The following example uses the TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) method to convert strings that must be either in a "yyyyMMdd" format or a "HHmmss" format to DateTime values.

[!code-csharpSystem.DateTime.Parsing#2][!code-csharpSystem.DateTime.Parsing#2]

Dim formats() As String = {"yyyyMMdd", "HHmmss"}
Dim dateStrings() As String = {"20130816", "20131608",
                              "  20130816   ", "115216",
                              "521116", "  115216  "}
Dim parsedDate As DateTime

For Each dateString As String In dateStrings
    If DateTime.TryParseExact(dateString, formats, Nothing,
                           DateTimeStyles.AllowWhiteSpaces Or
                           DateTimeStyles.AdjustToUniversal,
                           parsedDate) Then
        Console.WriteLine($"{dateString} --> {parsedDate:g}")
    Else
        Console.WriteLine($"Cannot convert {dateString}")
    End If
Next
' The example displays the following output:
'       20130816 --> 8/16/2013 12:00 AM
'       Cannot convert 20131608
'         20130816    --> 8/16/2013 12:00 AM
'       115216 --> 4/22/2013 11:52 AM
'       Cannot convert 521116
'         115216   --> 4/22/2013 11:52 AM

Jednou z běžných použití ParseExact pro je převod řetězcové reprezentace z webové služby, obvykle ve formátu ISO 8601 Standard.One common use for ParseExact is to convert a string representation from a web service, usually in ISO 8601 standard format. Následující kód ukazuje správný řetězec formátu, který se má použít:The following code shows the correct format string to use:

[!code-csharp-interactiveSystem.DateTime.Parsing#3][!code-csharp-interactiveSystem.DateTime.Parsing#3]

Dim iso8601String As String = "20080501T08:30:52Z"
Dim dateISO8602 As DateTime = DateTime.ParseExact(iso8601String, "yyyyMMddTHH:mm:ssZ", CultureInfo.InvariantCulture)
Console.WriteLine($"{iso8601String} --> {dateISO8602:g}")

Pokud řetězec nelze analyzovat, Parse metody a ParseExact vyvolávají výjimku.If a string cannot be parsed, the Parse and ParseExact methods throw an exception. Metody TryParse a TryParseExact vracíBoolean hodnotu, která označuje, zda byl převod úspěšný nebo neúspěšný.The TryParse and TryParseExact methods return a Boolean value that indicates whether the conversion succeeded or failed. Ve scénářích, TryParse kde TryParseExact je výkon důležitý, byste měli použít metody nebo.You should use the TryParse or TryParseExact methods in scenarios where performance is important. Operace analýzy pro řetězce data a času má za následek vysokou míru selhání a zpracování výjimek je nákladné.The parsing operation for date and time strings tends to have a high failure rate, and exception handling is expensive. Tyto metody použijte, pokud jsou řetězce vstupními uživateli nebo pocházejí z neznámého zdroje.Use these methods if strings are input by users or coming from an unknown source.

Další informace o analýze hodnot data a času naleznete v tématu Analýza řetězců data a času.For more information about parsing date and time values, see Parsing Date and Time Strings.

Hodnoty data a časuDateTime values

Popisy časových hodnot v DateTime typu se často vyjadřují pomocí standardu UTC (Coordinated Universal Time).Descriptions of time values in the DateTime type are often expressed using the Coordinated Universal Time (UTC) standard. Koordinovaný světový čas je mezinárodně uznávaný název pro střední Greenwichský čas (GMT).Coordinated Universal Time is the internationally recognized name for Greenwich Mean Time (GMT). Koordinovaný světový čas je čas měřený na základě nulové hodnoty Zeměpisná délka a zdrojového bodu UTC.Coordinated Universal Time is the time as measured at zero degrees longitude, the UTC origin point. Letní čas není platný pro čas UTC.Daylight saving time is not applicable to UTC.

Místní čas je relativní vzhledem k určitému časovému pásmu.Local time is relative to a particular time zone. Časové pásmo je přidruženo k posunu časového pásma.A time zone is associated with a time zone offset. Posun časového pásma je umístění časového pásma měřené v hodinách od bodu původu UTC.A time zone offset is the displacement of the time zone measured in hours from the UTC origin point. Kromě toho místní čas je volitelně ovlivněný letním časem, který přidá nebo odečte úpravu časového intervalu.In addition, local time is optionally affected by daylight saving time, which adds or subtracts a time interval adjustment. Místní čas se počítá přidáním posunu časového pásma do UTC a úpravou pro letní čas v případě potřeby.Local time is calculated by adding the time zone offset to UTC and adjusting for daylight saving time if necessary. Posun časového pásma v počátečním bodu UTC je nula.The time zone offset at the UTC origin point is zero.

Čas UTC je vhodný pro výpočty, porovnávání a ukládání dat a času v souborech.UTC time is suitable for calculations, comparisons, and storing dates and time in files. Místní čas je vhodný pro zobrazení v uživatelských rozhraních aplikací klasické pracovní plochy.Local time is appropriate for display in user interfaces of desktop applications. Aplikace pracující s časovými pásmy (například mnoho webových aplikací) potřebují také pracovat s několika dalšími časovými pásmy.Time zone-aware applications (such as many Web applications) also need to work with a number of other time zones.

DateTime Pokud je Kind vlastnostobjektu,neníurčena,zdaječasreprezentovanýmístnímčasem,časemUTCnebočasemvněkterémjinémčasovémDateTimeKind.Unspecifiedpásmu.If the Kind property of a DateTime object is DateTimeKind.Unspecified, it is unspecified whether the time represented is local time, UTC time, or a time in some other time zone.

Řešení data a časuDateTime resolution

Poznámka

Jako alternativu k provádění aritmetické operace DateTime s hodnotami data a času při měření uplynulého času můžete Stopwatch použít třídu.As an alternative to performing date and time arithmetic on DateTime values to measure elapsed time, you can use the Stopwatch class.

Ticks Vlastnost vyjadřuje hodnoty data a času v jednotkách 1 10 – millionth sekund.The Ticks property expresses date and time values in units of one ten-millionth of a second. Millisecond Vlastnost vrací sekundy sekundy v hodnotě data a času.The Millisecond property returns the thousandths of a second in a date and time value. Použití opakovaných volání DateTime.Now vlastnosti k měření uplynulého času závisí na systémových hodinách.Using repeated calls to the DateTime.Now property to measure elapsed time is dependent on the system clock. Systémové hodiny v systémech Windows 7 a Windows 8 mají rozlišení přibližně 15 milisekund.The system clock on Windows 7 and Windows 8 systems has a resolution of approximately 15 milliseconds. Toto rozlišení má vliv na krátké časové intervaly méně než 100 milisekund.This resolution affects small time intervals less than 100 milliseconds.

Následující příklad znázorňuje závislost aktuální hodnoty data a času v rozlišení systémových hodin.The following example illustrates the dependence of current date and time values on the resolution of the system clock. V příkladu se vnější smyčka opakuje dvakrát a vnitřní smyčka slouží ke zpoždění vnější smyčky.In the example, an outer loop repeats 20 times, and an inner loop serves to delay the outer loop. Pokud je hodnota čítače vnějšího cyklu 10, volání Thread.Sleep metody zavádí zpoždění po pěti milisekundách.If the value of the outer loop counter is 10, a call to the Thread.Sleep method introduces a five-millisecond delay. Následující příklad ukazuje počet milisekund vrácených DateTime.Now.Milliseconds změnou vlastnosti pouze po Thread.Sleepvolání metody.The following example shows the number of milliseconds returned by the DateTime.Now.Milliseconds property changes only after the call to Thread.Sleep.

[!code-csharp-interactiveSystem.DateTime.Resolution#1][!code-csharp-interactiveSystem.DateTime.Resolution#1]

Dim output As String = ""
For ctr As Integer = 0 To 20
    output += Date.Now.Millisecond.ToString() + vbCrLf
    ' Introduce a delay loop.
    For delay As Integer = 0 To 1000
    Next

    If ctr = 10 Then
        output += "Thread.Sleep called..." + vbCrLf
        Thread.Sleep(5)
    End If
Next
Console.WriteLine(output)
' The example displays output like the following:
'       111
'       111
'       111
'       111
'       111
'       111
'       111
'       111
'       111
'       111
'       111
'       Thread.Sleep called...
'       143
'       143
'       143
'       143
'       143
'       143
'       143
'       143
'       143
'       143

Operace data a časuDateTime operations

Výpočet pomocí DateTime struktury, Add jako je například nebo Subtract, neupravuje hodnotu struktury.A calculation using a DateTime structure, such as Add or Subtract, does not modify the value of the structure. Místo toho výpočet vrátí novou DateTime strukturu, jejíž hodnota je výsledkem výpočtu.Instead, the calculation returns a new DateTime structure whose value is the result of the calculation.

Operace převodu mezi časovými pásmy (například mezi časem UTC a místním časem nebo mezi jednou a jiným) přijímají do účtu letní čas, ale operace aritmetických operací porovnávání nikoli.Conversion operations between time zones (such as between UTC and local time, or between one time zone and another) take daylight saving time into account, but arithmetic and comparison operations do not.

DateTime Struktura sama nabízí omezené podpory pro převod z jednoho časového pásma na jiný.The DateTime structure itself offers limited support for converting from one time zone to another. Můžete použít ToLocalTime metodu pro převod UTC na místní čas nebo můžete ToUniversalTime použít metodu pro převod z místního času na UTC.You can use the ToLocalTime method to convert UTC to local time, or you can use the ToUniversalTime method to convert from local time to UTC. Ve TimeZoneInfo třídě je však k dispozici úplná sada metod převodu časového pásma.However, a full set of time zone conversion methods is available in the TimeZoneInfo class. Pomocí těchto metod převedete čas v každé z celých časových pásem na světě na čas v jakémkoli jiném časovém pásmu.You convert the time in any one of the world's time zones to the time in any other time zone using these methods.

Výpočty a porovnání DateTime objektů jsou smysluplné pouze v případě, že objekty představují časy ve stejném časovém pásmu.Calculations and comparisons of DateTime objects are meaningful only if the objects represent times in the same time zone. Můžete použít TimeZoneInfo objekt, který DateTime představuje časové pásmo hodnoty, i když tyto dvě jsou volně spárované.You can use a TimeZoneInfo object to represent a DateTime value's time zone, although the two are loosely coupled. DateTime Objekt neobsahuje vlastnost, která vrací objekt, který představuje toto časové pásmo hodnoty data a času.A DateTime object does not have a property that returns an object that represents that date and time value's time zone. Vlastnost označuje, DateTime zda představuje UTC, místní čas nebo není určeno. KindThe Kind property indicates if a DateTime represents UTC, local time, or is unspecified. V aplikaci pracující s časovou zónou musíte spoléhat na některé externí mechanismy a určit tak časové pásmo, ve kterém DateTime byl objekt vytvořen.In a time zone-aware application, you must rely on some external mechanism to determine the time zone in which a DateTime object was created. Můžete použít strukturu, která zabalí jak DateTime hodnotu, TimeZoneInfo tak i objekt, který představuje DateTime časové pásmo hodnoty.You could use a structure that wraps both the DateTime value and the TimeZoneInfo object that represents the DateTime value's time zone. Podrobnosti o používání standardu UTC při výpočtech a DateTime porovnávání s hodnotami naleznete v tématu provádění aritmetických operací s daty a časy.For details on using UTC in calculations and comparisons with DateTime values, see Performing Arithmetic Operations with Dates and Times.

Každý DateTime člen implicitně používá gregoriánský kalendář k provedení jeho operace.Each DateTime member implicitly uses the Gregorian calendar to perform its operation. Výjimky jsou metody, které implicitně určují kalendář.Exceptions are methods that implicitly specify a calendar. Mezi ně patří konstruktory, které určují kalendář, a metody s parametrem odvozeným z IFormatProvider, System.Globalization.DateTimeFormatInfonapříklad.These include constructors that specify a calendar, and methods with a parameter derived from IFormatProvider, such as System.Globalization.DateTimeFormatInfo.

Operace prováděné členy DateTime typu berou v úvahu podrobnosti, například přestupné roky a počet dní v měsíci.Operations by members of the DateTime type take into account details such as leap years and the number of days in a month.

Hodnoty a kalendáře DateTimeDateTime values and calendars

Knihovna tříd .NET Framework obsahuje řadu tříd kalendáře, z nichž všechny jsou odvozeny z Calendar třídy.The .NET Framework Class Library includes a number of calendar classes, all of which are derived from the Calendar class. Možnosti jsou následující:They are:

Důležité

Větší počet období v japonské kalendářích jsou založené na císaře a proto se neočekává změna.Eras in the Japanese calendars are based on the emperor's reign and are therefore expected to change. Například 1. května 2019 označené začátku období Reiwa ve JapaneseCalendar a JapaneseLunisolarCalendar.For example, May 1, 2019 marked the beginning of the Reiwa era in the JapaneseCalendar and JapaneseLunisolarCalendar. Tuto změnu období ovlivňuje všechny aplikace, které používají tyto kalendáře.Such a change of era affects all applications that use these calendars. Zobrazit zpracování do nové éry v japonské kalendáře v rozhraní .NET Další informace a na zjištění, zda jsou vliv na vaše aplikace.See Handling a new era in the Japanese calendar in .NET for more information and to determine whether your applications are affected. Zobrazit Příprava aplikace pro změnu japonské období informace o testování aplikací v systémech Windows pro zajištění jejich připravenosti změna éry.See Prepare your application for the Japanese era change for information on testing your applications on Windows systems to ensure their readiness for the era change. Zobrazit práce s obdobími pro funkce v rozhraní .NET, které podporují kalendářích s obdobími více a osvědčené postupy při práci s kalendáře, které podporují větší počet období.See Working with eras for features in .NET that support calendars with multiple eras and for best practices when working with calendars that support multiple eras.

Každá jazyková verze používá výchozí kalendář definovaný vlastností jen CultureInfo.Calendar pro čtení.Each culture uses a default calendar defined by its read-only CultureInfo.Calendar property. Každá jazyková verze může podporovat jeden nebo více kalendářů definovaných vlastností jen CultureInfo.OptionalCalendars pro čtení.Each culture may support one or more calendars defined by its read-only CultureInfo.OptionalCalendars property. Kalendář, který aktuálně používá určitý CultureInfo objekt, je definován jeho DateTimeFormatInfo.Calendar vlastností.The calendar currently used by a specific CultureInfo object is defined by its DateTimeFormatInfo.Calendar property. Musí to být jeden z kalendářů nalezených v CultureInfo.OptionalCalendars poli.It must be one of the calendars found in the CultureInfo.OptionalCalendars array.

Aktuální kalendář jazykové verze se používá ve všech operacích formátování pro tuto jazykovou verzi.A culture's current calendar is used in all formatting operations for that culture. Například výchozí kalendář thajské jazykové verze je thajský kalendář období, který je reprezentován ThaiBuddhistCalendar třídou.For example, the default calendar of the Thai Buddhist culture is the Thai Buddhist Era calendar, which is represented by the ThaiBuddhistCalendar class. Pokud je v operaci formátování data a času použit objekt,kterýpředstavujejazykovouverzithajskéhobuddhistickýhokalendáře,jevevýchozímnastavenípoužitkalendářprothajskýbuddhistickýobdobí.CultureInfoWhen a CultureInfo object that represents the Thai Buddhist culture is used in a date and time formatting operation, the Thai Buddhist Era calendar is used by default. Gregoriánský kalendář je použit pouze v případě, že je DateTimeFormatInfo.Calendar změněna vlastnost jazykové verze, jak ukazuje následující příklad:The Gregorian calendar is used only if the culture's DateTimeFormatInfo.Calendar property is changed, as the following example shows:

[!code-csharpSystem.DateTime.Calendar#1][!code-csharpSystem.DateTime.Calendar#1]

Dim thTH As New CultureInfo("th-TH")
Dim value As New DateTime(2016, 5, 28)

Console.WriteLine(value.ToString(thTH))

thTH.DateTimeFormat.Calendar = New GregorianCalendar()
Console.WriteLine(value.ToString(thTH))
' The example displays the following output:
'       28/5/2559 0:00:00
'       28/5/2016 0:00:00

Aktuální kalendář jazykové verze se používá také ve všech operacích analýzy pro tuto jazykovou verzi, jak ukazuje následující příklad.A culture's current calendar is also used in all parsing operations for that culture, as the following example shows.

[!code-csharpSystem.DateTime.Calendar#2][!code-csharpSystem.DateTime.Calendar#2]

Private Sub ThaiBuddhistEraParse()
    Dim thTH As New CultureInfo("th-TH")
    Dim value As DateTime = DateTime.Parse("28/5/2559", thTH)
    Console.WriteLine(value.ToString(thTH))

    thTH.DateTimeFormat.Calendar = New GregorianCalendar()
    Console.WriteLine(value.ToString(thTH))
    ' The example displays the following output:
    '       28/5/2559 0:00:00
    '       28/5/2016 0:00:00
End Sub

Vytvořte instanci DateTime hodnoty pomocí prvků data a času (číslo roku, měsíce a dne) konkrétního kalendáře voláním konstruktoru DateTime , který obsahuje calendar parametr a předáním Calendar objektu, který představuje tento kalendář.You instantiate a DateTime value using the date and time elements (number of the year, month, and day) of a specific calendar by calling a DateTime constructor that includes a calendar parameter and passing it a Calendar object that represents that calendar. V následujícím příkladu jsou použity prvky data a času z ThaiBuddhistCalendar kalendáře.The following example uses the date and time elements from the ThaiBuddhistCalendar calendar.

[!code-csharpSystem.DateTime.Calendar#3][!code-csharpSystem.DateTime.Calendar#3]

Dim thTH As New CultureInfo("th-TH")
Dim dat As New DateTime(2559, 5, 28, thTH.DateTimeFormat.Calendar)
Console.WriteLine($"Thai Buddhist Era date: {dat.ToString("d", thTH)}")
Console.WriteLine($"Gregorian date:   {dat:d}")
' The example displays the following output:
'       Thai Buddhist Era Date:  28/5/2559
'       Gregorian Date:     28/05/2016

DateTimekonstruktory, které neobsahují calendar parametr, předpokládají, že prvky data a času jsou vyjádřeny jako jednotky v gregoriánském kalendáři.DateTime constructors that do not include a calendar parameter assume that the date and time elements are expressed as units in the Gregorian calendar.

Všechny ostatní DateTime vlastnosti a metody používají gregoriánský kalendář.All other DateTime properties and methods use the Gregorian calendar. DateTime.Year Vlastnost například vrátí rok v gregoriánském kalendáři DateTime.IsLeapYear(Int32) a metoda předpokládá, že year parametr je rok v gregoriánském kalendáři.For example, the DateTime.Year property returns the year in the Gregorian calendar, and the DateTime.IsLeapYear(Int32) method assumes that the year parameter is a year in the Gregorian calendar. Každý DateTime člen, který používá gregoriánský kalendář, má odpovídajícího člena Calendar třídy, která používá konkrétní kalendář.Each DateTime member that uses the Gregorian calendar has a corresponding member of the Calendar class that uses a specific calendar. Například Calendar.GetYear metoda vrátí rok v konkrétním kalendáři Calendar.IsLeapYear a metoda interpretuje year parametr jako číslo roku v konkrétním kalendáři.For example, the Calendar.GetYear method returns the year in a specific calendar, and the Calendar.IsLeapYear method interprets the year parameter as a year number in a specific calendar. Následující příklad používá DateTime a odpovídající členy ThaiBuddhistCalendar třídy.The following example uses both the DateTime and the corresponding members of the ThaiBuddhistCalendar class.

[!code-csharpSystem.DateTime.Calendar#4][!code-csharpSystem.DateTime.Calendar#4]

Dim thTH As New CultureInfo("th-TH")
Dim cal As Calendar = thTH.DateTimeFormat.Calendar
Dim dat As New DateTime(2559, 5, 28, cal)
Console.WriteLine("Using the Thai Buddhist Era calendar:")
Console.WriteLine($"Date: {dat.ToString("d", thTH)}")
Console.WriteLine($"Year: {cal.GetYear(dat)}")
Console.WriteLine($"Leap year: {cal.IsLeapYear(cal.GetYear(dat))}")
Console.WriteLine()

Console.WriteLine("Using the Gregorian calendar:")
Console.WriteLine($"Date: {dat:d}")
Console.WriteLine($"Year: {dat.Year}")
Console.WriteLine($"Leap year: {DateTime.IsLeapYear(dat.Year)}")
' The example displays the following output:
'       Using the Thai Buddhist Era calendar
'       Date :   28/5/2559
'       Year: 2559
'       Leap year :   True
'
'       Using the Gregorian calendar
'       Date :   28/05/2016
'       Year: 2016
'       Leap year :   True

DateTime StrukturaDayOfWeek obsahuje vlastnost, která vrátí den v týdnu v gregoriánském kalendáři.The DateTime structure includes a DayOfWeek property that returns the day of the week in the Gregorian calendar. Nezahrnuje člen, který umožňuje načíst číslo týdne v roce.It does not include a member that allows you to retrieve the week number of the year. Chcete-li načíst týden v roce, zavolejte Calendar.GetWeekOfYear metodu jednotlivého kalendáře.To retrieve the week of the year, call the individual calendar's Calendar.GetWeekOfYear method. V následujícím příkladu je uvedena ukázka.The following example provides an illustration.

[!code-csharpSystem.DateTime.Calendar#5][!code-csharpSystem.DateTime.Calendar#5]

Dim thTH As New CultureInfo("th-TH")
Dim thCalendar As Calendar = thTH.DateTimeFormat.Calendar
Dim dat As New DateTime(1395, 8, 18, thCalendar)
Console.WriteLine("Using the Thai Buddhist Era calendar:")
Console.WriteLine($"Date: {dat.ToString("d", thTH)}")
Console.WriteLine($"Day of Week: {thCalendar.GetDayOfWeek(dat)}")
Console.WriteLine($"Week of year: {thCalendar.GetWeekOfYear(dat, CalendarWeekRule.FirstDay, DayOfWeek.Sunday)}")
Console.WriteLine()

Dim greg As Calendar = New GregorianCalendar()
Console.WriteLine("Using the Gregorian calendar:")
Console.WriteLine($"Date: {dat:d}")
Console.WriteLine($"Day of Week: {dat.DayOfWeek}")
Console.WriteLine($"Week of year: {greg.GetWeekOfYear(dat, CalendarWeekRule.FirstDay, DayOfWeek.Sunday)}")
' The example displays the following output:
'       Using the Thai Buddhist Era calendar
'       Date :  18/8/1395
'       Day of Week: Sunday
'       Week of year: 34
'       
'       Using the Gregorian calendar
'       Date :  18/08/0852
'       Day of Week: Sunday
'       Week of year: 34

Další informace o datech a kalendářích najdete v tématu práce s kalendáři.For more information on dates and calendars, see Working with Calendars.

Zachování hodnot DateTimePersisting DateTime values

Hodnoty můžete zachovat DateTime čtyřmi způsoby:You can persist DateTime values in four ways:

Je nutné zajistit, aby rutina, která DateTime obnovuje hodnoty, neztratila data nebo vyvolala výjimku bez ohledu na to, kterou metodu zvolíte.You must ensure that the routine that restores the DateTime values doesn't lose data or throw an exception regardless of which technique you choose. DateTimehodnoty by měly být v operaci round-trip.DateTime values should round-trip. To znamená, že původní hodnota a obnovená hodnota by měly být stejné.That is, the original value and the restored value should be the same. A pokud původní DateTime hodnota představuje jedinou dobu, měla by identifikovat stejný okamžik, kdy se obnoví.And if the original DateTime value represents a single instant of time, it should identify the same moment of time when it's restored.

Zachování hodnot jako řetězcůPersisting values as strings

K úspěšnému DateTime obnovení hodnot, které jsou trvalé jako řetězce, postupujte podle těchto pravidel:To successfully restore DateTime values that are persisted as strings, follow these rules:

  • Stejné předpoklady pro formátování specifické pro jazykovou verzi provádějte při obnovení řetězce jako při jeho zachování.Make the same assumptions about culture-specific formatting when you restore the string as when you persisted it. Chcete-li zajistit, aby byl řetězec obnoven v systému, jehož aktuální jazyková verze je odlišná od jazykové verze systému, v němž byl uložen, ToString zavolejte přetížení pro uložení řetězce pomocí konvencí invariantní jazykové verze.To ensure that a string can be restored on a system whose current culture is different from the culture of the system it was saved on, call the ToString overload to save the string by using the conventions of the invariant culture. Zavolejte metodu TryParse(String, IFormatProvider, DateTimeStyles, DateTime) nebo přetížení pro obnovení řetězce pomocí konvencí invariantní jazykové verze. Parse(String, IFormatProvider, DateTimeStyles)Call the Parse(String, IFormatProvider, DateTimeStyles) or TryParse(String, IFormatProvider, DateTimeStyles, DateTime) overload to restore the string by using the conventions of the invariant culture. Nikdy nepoužívejte ToString()přetížení Parse(String), nebo TryParse(String, DateTime) , které používají konvence aktuální jazykové verze vlákna.Never use the ToString(), Parse(String), or TryParse(String, DateTime) overloads, which use the conventions of the current thread culture.

  • Pokud datum představuje jednorázový čas, ujistěte se, že představuje stejný okamžik v čase, kdy je obnovena, a to i v jiném časovém pásmu.If the date represents a single moment of time, ensure that it represents the same moment in time when it's restored, even on a different time zone. Před uložením DateTime hodnotu převeďte na koordinovaný světový čas (UTC).Convert the DateTime value to Coordinated Universal Time (UTC) before saving it. Můžete také serializovat hodnotu spolu s informacemi o časovém pásmu.You can also serialize the value along with time zone information. Další informace o tomto přístupu najdete v tématu serializace dat typu DateTime a časového pásma.For more information about this approach, see Serializing DateTime and time zone data.

Nejběžnější chyba vytvořená při zachování DateTime hodnot jako řetězců je spoléhat na konvence formátování výchozí nebo aktuální jazykové verze.The most common error made when persisting DateTime values as strings is to rely on the formatting conventions of the default or current culture. K problémům dojde, pokud je aktuální jazyková verze při ukládání a obnovování řetězců odlišná.Problems arise if the current culture is different when saving and restoring the strings. Následující příklad znázorňuje tyto problémy.The following example illustrates these problems. Ukládá pět kalendářních dat pomocí formátovacích úmluv aktuální jazykové verze, což je v tomto případě angličtina (USA).It saves five dates using the formatting conventions of the current culture, which in this case is English (United States). Obnoví data pomocí formátovacích úmluv jiné jazykové verze, což je v tomto případě angličtina (Velká Británie).It restores the dates using the formatting conventions of a different culture, which in this case is English (Great Britain). Vzhledem k tomu, že se konvence formátování těchto dvou jazykových verzí liší, nelze obnovit dvě data a zbývající tři data budou interpretována nesprávně.Because the formatting conventions of the two cultures are different, two of the dates can't be restored, and the remaining three dates are interpreted incorrectly. Také pokud původní hodnoty data a času představují jednorázový čas v čase, jsou obnoveny nesprávné časy, protože informace o časovém pásmu jsou ztraceny.Also, if the original date and time values represent single moments in time, the restored times are incorrect because time zone information is lost.

[!code-csharpSystem.DateTime.Persistence#1][!code-csharpSystem.DateTime.Persistence#1]

Public Sub PersistAsLocalStrings()
    SaveDatesAsStrings()
    RestoreDatesAsStrings()
End Sub

Private Sub SaveDatesAsStrings()
    Dim dates As Date() = {#6/14/2014 6:32AM#, #7/10/2014 11:49PM#,
                          #1/10/2015 1:16AM#, #12/20/2014 9:45PM#,
                          #6/2/2014 3:14PM#}
    Dim output As String = Nothing

    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}")
    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    For ctr As Integer = 0 To dates.Length - 1
        Console.WriteLine(dates(ctr).ToString("f"))
        output += dates(ctr).ToString() + If(ctr <> dates.Length - 1, "|", "")
    Next
    Dim sw As New StreamWriter(filenameTxt)
    sw.Write(output)
    sw.Close()
    Console.WriteLine("Saved dates...")
End Sub

Private Sub RestoreDatesAsStrings()
    TimeZoneInfo.ClearCachedData()
    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}")
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB")
    Dim sr As New StreamReader(filenameTxt)
    Dim inputValues As String() = sr.ReadToEnd().Split({"|"c}, StringSplitOptions.RemoveEmptyEntries)
    sr.Close()
    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    For Each inputValue In inputValues
        Dim dateValue As Date
        If DateTime.TryParse(inputValue, dateValue) Then
            Console.WriteLine($"'{inputValue}' --> {dateValue:f}")
        Else
            Console.WriteLine($"Cannot parse '{inputValue}'")
        End If
    Next
    Console.WriteLine("Restored dates...")
End Sub
' When saved on an en-US system, the example displays the following output:
'       Current Time Zone: (UTC-08:00) Pacific Time (US & Canada)
'       The dates on an en-US system:
'       Saturday, June 14, 2014 6:32 AM
'       Thursday, July 10, 2014 11:49 PM
'       Saturday, January 10, 2015 1:16 AM
'       Saturday, December 20, 2014 9:45 PM
'       Monday, June 02, 2014 3:14 PM
'       Saved dates...
'
' When restored on an en-GB system, the example displays the following output:
'       Current Time Zone: (UTC) Dublin, Edinburgh, Lisbon, London
'       The dates on an en-GB system:
'       Cannot parse '6/14/2014 6:32:00 AM'
'       '7/10/2014 11:49:00 PM' --> 07 October 2014 23:49
'       '1/10/2015 1:16:00 AM' --> 01 October 2015 01:16
'       Cannot parse '12/20/2014 9:45:00 PM'
'       '6/2/2014 3:14:00 PM' --> 06 February 2014 15:14
'       Restored dates...

K úspěšnému přenosu DateTime hodnot použijte následující postup:To round-trip DateTime values successfully, follow these steps:

  1. Pokud hodnoty reprezentují jednorázový čas, převeďte je z místního času na čas UTC voláním ToUniversalTime metody.If the values represent single moments of time, convert them from the local time to UTC by calling the ToUniversalTime method.
  2. Převeďte data na jejich řetězcové reprezentace voláním ToString(String, IFormatProvider) metody nebo String.Format(IFormatProvider, String, Object[]) přetížení.Convert the dates to their string representations by calling the ToString(String, IFormatProvider) or String.Format(IFormatProvider, String, Object[]) overload. Použijte konvence formátování invariantní jazykové verze zadáním CultureInfo.InvariantCulture provider jako argument.Use the formatting conventions of the invariant culture by specifying CultureInfo.InvariantCulture as the provider argument. Určete, zda má být hodnota zpátečního přenosu použita pomocí standardního formátovacího řetězce "O" nebo "R".Specify that the value should round-trip by using the "O" or "R" standard format string.

Chcete-li obnovit trvalé DateTime hodnoty bez ztráty dat, postupujte podle následujících kroků:To restore the persisted DateTime values without data loss, follow these steps:

  1. Analyzujte data voláním ParseExact metody nebo TryParseExact přetížením.Parse the data by calling the ParseExact or TryParseExact overload. Zadejte CultureInfo.InvariantCulture format jako argument a použijte stejný standardní formátovací řetězec, který jste použili pro argument během převodu. providerSpecify CultureInfo.InvariantCulture as the provider argument, and use the same standard format string you used for the format argument during conversion. Do argumentu zadejte DateTimeStyles.RoundtripKindhodnotu styles .Include the DateTimeStyles.RoundtripKind value in the styles argument.
  2. Pokud hodnoty reprezentují jednorázový čas, ToLocalTime zavolejte metodu pro převedení analyzovaného data z času UTC na místní čas. DateTimeIf the DateTime values represent single moments in time, call the ToLocalTime method to convert the parsed date from UTC to local time.

Následující příklad používá invariantní jazykovou verzi a standardní formátovací řetězec "O" pro zajištění, DateTime že hodnoty uložené a obnovené reprezentují stejný okamžik v čase bez ohledu na systém, jazykovou verzi nebo časové pásmo zdrojového a cílového systému.The following example uses the invariant culture and the "O" standard format string to ensure that DateTime values saved and restored represent the same moment in time regardless of the system, culture, or time zone of the source and target systems.

[!code-csharpSystem.DateTime.Persistence#2][!code-csharpSystem.DateTime.Persistence#2]

Public Sub PersistAsInvariantStrings()
    SaveDatesAsInvariantStrings()
    RestoreDatesAsInvariantStrings()
End Sub

Private Sub SaveDatesAsInvariantStrings()
    Dim dates As Date() = {#6/14/2014 6:32AM#, #7/10/2014 11:49PM#,
                          #1/10/2015 1:16AM#, #12/20/2014 9:45PM#,
                          #6/2/2014 3:14PM#}
    Dim output As String = Nothing

    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}")
    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    For ctr As Integer = 0 To dates.Length - 1
        Console.WriteLine(dates(ctr).ToString("f"))
        output += dates(ctr).ToUniversalTime().ToString("O", CultureInfo.InvariantCulture) +
                                   If(ctr <> dates.Length - 1, "|", "")
    Next
    Dim sw As New StreamWriter(filenameTxt)
    sw.Write(output)
    sw.Close()
    Console.WriteLine("Saved dates...")
End Sub

Private Sub RestoreDatesAsInvariantStrings()
    TimeZoneInfo.ClearCachedData()
    Console.WriteLine("Current Time Zone: {0}",
                    TimeZoneInfo.Local.DisplayName)
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB")
    Dim sr As New StreamReader(filenameTxt)
    Dim inputValues As String() = sr.ReadToEnd().Split({"|"c}, StringSplitOptions.RemoveEmptyEntries)
    sr.Close()
    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    For Each inputValue In inputValues
        Dim dateValue As Date
        If DateTime.TryParseExact(inputValue, "O", CultureInfo.InvariantCulture,
                          DateTimeStyles.RoundtripKind, dateValue) Then
            Console.WriteLine($"'{inputValue}' --> {dateValue.ToLocalTime():f}")
        Else
            Console.WriteLine($"Cannot parse '{inputValue}'")
        End If
    Next
    Console.WriteLine("Restored dates...")
End Sub
' When saved on an en-US system, the example displays the following output:
'       Current Time Zone: (UTC-08:00) Pacific Time (US & Canada)
'       The dates on an en-US system:
'       Saturday, June 14, 2014 6:32 AM
'       Thursday, July 10, 2014 11:49 PM
'       Saturday, January 10, 2015 1:16 AM
'       Saturday, December 20, 2014 9:45 PM
'       Monday, June 02, 2014 3:14 PM
'       Saved dates...
'
' When restored on an en-GB system, the example displays the following output:
'       Current Time Zone: (UTC) Dublin, Edinburgh, Lisbon, London
'       The dates on an en-GB system:
'       '2014-06-14T13:32:00.0000000Z' --> 14 June 2014 14:32
'       '2014-07-11T06:49:00.0000000Z' --> 11 July 2014 07:49
'       '2015-01-10T09:16:00.0000000Z' --> 10 January 2015 09:16
'       '2014-12-21T05:45:00.0000000Z' --> 21 December 2014 05:45
'       '2014-06-02T22:14:00.0000000Z' --> 02 June 2014 23:14
'       Restored dates...
Zachování hodnot jako celých číselPersisting values as integers

Datum a čas můžete zachovat jako Int64 hodnotu, která představuje počet impulsů.You can persist a date and time as an Int64 value that represents a number of ticks. V takovém případě nemusíte uvažovat o jazykové verzi systémů, na které DateTime jsou hodnoty trvalé a obnoveny.In this case, you don't have to consider the culture of the systems the DateTime values are persisted and restored on.

Chcete-li DateTime zachovat hodnotu jako celé číslo:To persist a DateTime value as an integer:

  • Pokud hodnoty reprezentují jediný okamžik v čase, převeďte je na čas UTC ToUniversalTime voláním metody. DateTimeIf the DateTime values represent single moments in time, convert them to UTC by calling the ToUniversalTime method.
  • Načte počet impulsů reprezentovaných DateTime hodnotou z její Ticks vlastnosti.Retrieve the number of ticks represented by the DateTime value from its Ticks property.

Chcete-li DateTime obnovit hodnotu, která byla trvalá jako celé číslo:To restore a DateTime value that has been persisted as an integer:

  1. Vytvořte instanci nového DateTime objektu Int64 předáním hodnoty DateTime(Int64) konstruktoru.Instantiate a new DateTime object by passing the Int64 value to the DateTime(Int64) constructor.
  2. Pokud hodnota představuje jediný okamžik v čase, převeďte ji z času UTC na místní čas ToLocalTime voláním metody. DateTimeIf the DateTime value represents a single moment in time, convert it from UTC to the local time by calling the ToLocalTime method.

Následující příklad uchovává pole DateTime hodnot jako celá čísla v systému v USA. Časové pásmo v Tichomoří.The following example persists an array of DateTime values as integers on a system in the U.S. Pacific Time zone. Obnoví ho v systému v zóně UTC.It restores it on a system in the UTC zone. Soubor, který obsahuje celá čísla, obsahuje Int32 hodnotu, která označuje celkový Int64 počet hodnot, které se bezprostředně následují.The file that contains the integers includes an Int32 value that indicates the total number of Int64 values that immediately follow it.

[!code-csharpSystem.DateTime.Persistence#3][!code-csharpSystem.DateTime.Persistence#3]

Public Sub PersistAsIntegers()
    SaveDatesAsIntegers()
    RestoreDatesAsIntegers()
End Sub

Private Sub SaveDatesAsIntegers()
    Dim dates As Date() = {#6/14/2014 6:32AM#, #7/10/2014 11:49PM#,
                          #1/10/2015 1:16AM#, #12/20/2014 9:45PM#,
                          #6/2/2014 3:14PM#}

    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}")
    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    Dim ticks(dates.Length - 1) As Long
    For ctr As Integer = 0 To dates.Length - 1
        Console.WriteLine(dates(ctr).ToString("f"))
        ticks(ctr) = dates(ctr).ToUniversalTime().Ticks
    Next
    Dim fs As New FileStream(filenameInts, FileMode.Create)
    Dim bw As New BinaryWriter(fs)
    bw.Write(ticks.Length)
    For Each tick In ticks
        bw.Write(tick)
    Next
    bw.Close()
    Console.WriteLine("Saved dates...")
End Sub

Private Sub RestoreDatesAsIntegers()
    TimeZoneInfo.ClearCachedData()
    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}")
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB")
    Dim fs As New FileStream(filenameInts, FileMode.Open)
    Dim br As New BinaryReader(fs)
    Dim items As Integer
    Dim dates As DateTime()

    Try
        items = br.ReadInt32()
        ReDim dates(items - 1)

        For ctr As Integer = 0 To items - 1
            Dim ticks As Long = br.ReadInt64()
            dates(ctr) = New DateTime(ticks).ToLocalTime()
        Next
    Catch e As EndOfStreamException
        Console.WriteLine("File corruption detected. Unable to restore data...")
        Exit Sub
    Catch e As IOException
        Console.WriteLine("Unspecified I/O error. Unable to restore data...")
        Exit Sub
    Catch e As OutOfMemoryException     'Thrown in array initialization.
        Console.WriteLine("File corruption detected. Unable to restore data...")
        Exit Sub
    Finally
        br.Close()
    End Try

    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    For Each value In dates
        Console.WriteLine(value.ToString("f"))
    Next
    Console.WriteLine("Restored dates...")
End Sub
' When saved on an en-US system, the example displays the following output:
'       Current Time Zone: (UTC-08:00) Pacific Time (US & Canada)
'       The dates on an en-US system:
'       Saturday, June 14, 2014 6:32 AM
'       Thursday, July 10, 2014 11:49 PM
'       Saturday, January 10, 2015 1:16 AM
'       Saturday, December 20, 2014 9:45 PM
'       Monday, June 02, 2014 3:14 PM
'       Saved dates...
'
' When restored on an en-GB system, the example displays the following output:
'       Current Time Zone: (UTC) Dublin, Edinburgh, Lisbon, London
'       The dates on an en-GB system:
'       14 June 2014 14:32
'       11 July 2014 07:49
'       10 January 2015 09:16
'       21 December 2014 05:45
'       02 June 2014 23:14
'       Restored dates...

Serializace hodnot DateTimeSerializing DateTime values

Hodnoty můžete zachovat DateTime prostřednictvím serializace do datového proudu nebo souboru a pak je obnovit pomocí deserializace.You can persist DateTime values through serialization to a stream or file, and then restore them through deserialization. DateTimedata jsou serializovaná v některém zadaném formátu objektu.DateTime data is serialized in some specified object format. Objekty jsou obnoveny při deserializaci.The objects are restored when they are deserialized. Formátovací modul nebo serializátor, například XmlSerializer nebo BinaryFormatter, zpracovávají proces serializace a deserializace.A formatter or serializer, such as XmlSerializer or BinaryFormatter, handles the process of serialization and deserialization. Další informace o serializaci a typech serializace podporovaného .NET Framework naleznete v tématu Serialization.For more information about serialization and the types of serialization supported by the .NET Framework, see Serialization.

Následující příklad používá XmlSerializer třídu k serializaci a deserializaci DateTime hodnot.The following example uses the XmlSerializer class to serialize and deserialize DateTime values. Hodnoty reprezentují všechny dny přestupnosti v dvacátém prvním století.The values represent all leap year days in the twenty-first century. Výstup představuje výsledek, pokud je příklad spuštěn v systému, jehož aktuální jazyková verze je angličtina (Velká Británie).The output represents the result if the example is run on a system whose current culture is English (Great Britain). Vzhledem k tomu, že jste deserializováni DateTime samotný objekt, kód nemusí zpracovávat kulturní rozdíly v formátech data a času.Because you've deserialized the DateTime object itself, the code doesn't have to handle cultural differences in date and time formats.

[!code-csharpSystem.DateTime.Persistence#4][!code-csharpSystem.DateTime.Persistence#4]

Public Sub PersistAsXml()
    ' Serialize the data.
    Dim leapYears As New List(Of DateTime)()
    For year As Integer = 2000 To 2100 Step 4
        If Date.IsLeapYear(year) Then
            leapYears.Add(New Date(year, 2, 29))
        End If
    Next
    Dim dateArray As DateTime() = leapYears.ToArray()

    Dim serializer As New XmlSerializer(dateArray.GetType())
    Dim sw As TextWriter = New StreamWriter(filenameXml)

    Try
        serializer.Serialize(sw, dateArray)
    Catch e As InvalidOperationException
        Console.WriteLine(e.InnerException.Message)
    Finally
        If sw IsNot Nothing Then sw.Close()
    End Try

    ' Deserialize the data.
    Dim deserializedDates As Date()
    Using fs As New FileStream(filenameXml, FileMode.Open)
        deserializedDates = CType(serializer.Deserialize(fs), Date())
    End Using

    ' Display the dates.
    Console.WriteLine($"Leap year days from 2000-2100 on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    Dim nItems As Integer
    For Each dat In deserializedDates
        Console.Write($"   {dat:d}     ")
        nItems += 1
        If nItems Mod 5 = 0 Then Console.WriteLine()
    Next
End Sub
' The example displays the following output:
'    Leap year days from 2000-2100 on an en-GB system:
'       29/02/2000       29/02/2004       29/02/2008       29/02/2012       29/02/2016
'       29/02/2020       29/02/2024       29/02/2028       29/02/2032       29/02/2036
'       29/02/2040       29/02/2044       29/02/2048       29/02/2052       29/02/2056
'       29/02/2060       29/02/2064       29/02/2068       29/02/2072       29/02/2076
'       29/02/2080       29/02/2084       29/02/2088       29/02/2092       29/02/2096

Předchozí příklad neobsahuje informace o čase.The previous example doesn't include time information. Pokud hodnota představuje moment v čase a je vyjádřena jako místní čas, převeďte ji z místního času na čas UTC před serializací ToUniversalTime voláním metody. DateTimeIf a DateTime value represents a moment in time and is expressed as a local time, convert it from local time to UTC before serializing it by calling the ToUniversalTime method. Po deserializaci ji převeďte z času UTC na místní čas voláním ToLocalTime metody.After you deserialize it, convert it from UTC to local time by calling the ToLocalTime method. Následující příklad používá BinaryFormatter třídu k serializaci DateTime dat v systému v USA. Tichomoří (standardní časové pásmo) a jeho deserializace v systému v USA Centrální standardní zóna.The following example uses the BinaryFormatter class to serialize DateTime data on a system in the U.S. Pacific Standard Time zone and to deserialize it on a system in the U.S. Central Standard zone.

[!code-csharpSystem.DateTime.Persistence#5][!code-csharpSystem.DateTime.Persistence#5]

Public Sub PersistBinary()
    SaveDatesBinary()
    RestoreDatesBinary()
End Sub

Private Sub SaveDatesBinary()
    Dim dates As Date() = {#6/14/2014 6:32AM#, #7/10/2014 11:49PM#,
                          #1/10/2015 1:16AM#, #12/20/2014 9:45PM#,
                          #6/2/2014 3:14PM#}
    Dim fs As New FileStream(filenameBin, FileMode.Create)
    Dim bin As New BinaryFormatter()

    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}")
    Console.WriteLine("The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    For ctr As Integer = 0 To dates.Length - 1
        Console.WriteLine(dates(ctr).ToString("f"))
        dates(ctr) = dates(ctr).ToUniversalTime()
    Next
    bin.Serialize(fs, dates)
    fs.Close()
    Console.WriteLine("Saved dates...")
End Sub

Private Sub RestoreDatesBinary()
    TimeZoneInfo.ClearCachedData()
    Console.WriteLine("Current Time Zone: {TimeZoneInfo.Local.DisplayName}")
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB")

    Dim fs As New FileStream(filenameBin, FileMode.Open)
    Dim bin As New BinaryFormatter()
    Dim dates As DateTime() = DirectCast(bin.Deserialize(fs), Date())
    fs.Close()

    Console.WriteLine("The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    For Each value In dates
        Console.WriteLine(value.ToLocalTime().ToString("f"))
    Next
    Console.WriteLine("Restored dates...")
End Sub
' When saved on an en-US system, the example displays the following output:
'       Current Time Zone: (UTC-08:00) Pacific Time (US & Canada)
'       The dates on an en-US system:
'       Saturday, June 14, 2014 6:32 AM
'       Thursday, July 10, 2014 11:49 PM
'       Saturday, January 10, 2015 1:16 AM
'       Saturday, December 20, 2014 9:45 PM
'       Monday, June 02, 2014 3:14 PM
'       Saved dates...
'
' When restored on an en-GB system, the example displays the following output:
'       Current Time Zone: (UTC-6:00) Central Time (US & Canada)
'       The dates on an en-GB system:
'       14 June 2014 08:32
'       11 July 2014 01:49
'       10 January 2015 03:16
'       20 December 2014 11:45
'       02 June 2014 17:14
'       Restored dates...

Serializace dat data a času v časovém pásmuSerializing DateTime and time zone data

V předchozích příkladech se předpokládá DateTime , že se hodnoty vyjadřují jako místní časy.The previous examples all assumed that DateTime values are expressed as local times. Kód převedl hodnoty mezi časem UTC a místním časem tak, aby odrážely stejný okamžik v čase ve zdrojovém a cílovém systému.The code converted the values between UTC and local time so they reflect the same moment in time on the source and target systems. DateTimehodnoty mohou také odrážet moment v čase v jiném časovém pásmu než místní a UTC.DateTime values may also reflect moments in time in a time zone other than local and UTC. Vzhledem k tomu, že DateTime TimeZoneInfo Strukturanezohledňuječasovápásma,jenutnéserializovatjakhodnotu,takiobjekt,kterýpředstavujeDateTime své časové pásmo.Because the DateTime structure is not time zone-aware, you have to serialize both the DateTime value and the TimeZoneInfo object that represents its time zone. Vytvořte typ, jehož pole obsahují jak DateTime hodnotu, tak i její časové pásmo.Create a type whose fields include both the DateTime value and its time zone. Následující příklad definuje DateWithTimeZone strukturu.The following example defines a DateWithTimeZone structure.

[!code-csharpSystem.DateTime.Persistence#6][!code-csharpSystem.DateTime.Persistence#6]

Namespace DateTimeExtensions
    <Serializable> Public Structure DateWithTimeZone
        Private tz As TimeZoneInfo
        Private dt As DateTime

        Public Sub New(dateValue As DateTime, timeZone As TimeZoneInfo)
            dt = dateValue
            tz = If(timeZone, TimeZoneInfo.Local)
        End Sub

        Public Property TimeZone As TimeZoneInfo
            Get
                Return tz
            End Get
            Set
                tz = Value
            End Set
        End Property

        Public Property DateTime As Date
            Get
                Return dt
            End Get
            Set
                dt = Value
            End Set
        End Property
    End Structure
End Namespace

Důležité

Struktura se používá v následujících dvou příkladech, které serializovat a deserializovat DateWithTimeZone pole objektů. DateWithTimeZoneThe DateWithTimeZone structure is used in the next two examples, which serialize and deserialize an array of DateWithTimeZone objects. Zdroj pro celou sadu příkladů z tohoto článku můžete zobrazit v Visual Basic nebo C# v úložišti Docs na GitHubu.You can view the source for the entire set of examples from this article in either Visual Basic or C# from the docs repository on GitHub.

Pomocí DateWithTimeZone struktury můžete zachovat datum a čas spolu s informacemi o časovém pásmu.By using the DateWithTimeZone structure, you can then persist date and time along with time zone information. Následující příklad používá BinaryFormatter třídu k serializaci DateWithTimeZone pole objektů.The following example uses the BinaryFormatter class to serialize an array of DateWithTimeZone objects.

public static void SaveDateWithTimeZone()
{
    DateWithTimeZone[] dates = { new DateWithTimeZone(new DateTime(2014, 8, 9, 19, 30, 0),
                              TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")),
                          new DateWithTimeZone(new DateTime(2014, 8, 15, 19, 0, 0),
                              TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time")),
                          new DateWithTimeZone(new DateTime(2014, 8, 22, 19, 30, 0),
                              TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")),
                          new DateWithTimeZone(new DateTime(2014, 8, 28, 19, 0, 0),
                              TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")) };
    var fs = new FileStream(@".\Schedule.bin", FileMode.Create);
    var formatter = new BinaryFormatter();
    try
    {
        formatter.Serialize(fs, dates);
        // Display dates.
        foreach (var date in dates)
        {
            TimeZoneInfo tz = date.TimeZone;
            Console.WriteLine($"{date.DateTime} {(tz.IsDaylightSavingTime(date.DateTime) ? tz.DaylightName : tz.StandardName)}");
        }
    }
    catch (SerializationException e)
    {
        Console.WriteLine($"Serialization failed. Reason: {e.Message}");
    }
    finally
    {
        if (fs != null) fs.Close();
    }
}
// The example displays the following output:
//       8/9/2014 7:30:00 PM Eastern Daylight Time
//       8/15/2014 7:00:00 PM Pacific Daylight Time
//       8/22/2014 7:30:00 PM Eastern Daylight Time
//       8/28/2014 7:00:00 PM Eastern Daylight Time
Public Sub SaveDateWithTimeZone()
    Dim dates As DateWithTimeZone() = {New DateWithTimeZone(#8/9/2014 7:30PM#,
                                      TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")),
                                  New DateWithTimeZone(#8/15/2014 7:00PM#,
                                      TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time")),
                                  New DateWithTimeZone(#8/22/2014 7:30PM#,
                                      TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")),
                                  New DateWithTimeZone(#8/28/2014 7:00PM#,
                                      TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"))}
    Dim fs As New FileStream(".\Schedule.bin", FileMode.Create)
    Dim formatter As New BinaryFormatter()
    Try
        formatter.Serialize(fs, dates)
    Catch e As SerializationException
        Console.WriteLine($"Serialization failed. Reason: {e.Message}")
    Finally
        If fs IsNot Nothing Then fs.Close()
    End Try
    ' Display dates.
    For Each dateInfo In dates
        Dim tz As TimeZoneInfo = dateInfo.TimeZone
        Console.WriteLine($"{dateInfo.DateTime} {If(tz.IsDaylightSavingTime(dateInfo.DateTime), tz.DaylightName, tz.StandardName)}")
    Next
End Sub
' The example displays the following output:
'       8/9/2014 7:30:00 PM Eastern Daylight Time
'       8/15/2014 7:00:00 PM Pacific Daylight Time
'       8/22/2014 7:30:00 PM Eastern Daylight Time
'       8/28/2014 7:00:00 PM Eastern Daylight Time

Následující příklad volá BinaryFormatter.Deserialize metodu pro její deserializaci.The following example then calls the BinaryFormatter.Deserialize method to deserialize it.

public static void RestoreDateWithTimeZone()
{
    const string filename = @".\Schedule.bin";
    FileStream fs;
    if (File.Exists(filename))
        fs = new FileStream(filename, FileMode.Open);
    else
    {
        Console.WriteLine("Unable to find file to deserialize.");
        return;
    }

    var formatter = new BinaryFormatter();
    DateWithTimeZone[] dates;
    try
    {
        dates = (DateWithTimeZone[])formatter.Deserialize(fs);
        // Display dates.
        foreach (var date in dates)
        {
            TimeZoneInfo tz = date.TimeZone;
            Console.WriteLine($"{ date.DateTime} {(tz.IsDaylightSavingTime(date.DateTime) ? tz.DaylightName : tz.StandardName)}");
        }
    }
    catch (SerializationException e)
    {
        Console.WriteLine($"Deserialization failed. Reason: {e.Message}");
    }
    finally
    {
        if (fs != null) fs.Close();
    }
}
// The example displays the following output:
//       8/9/2014 7:30:00 PM Eastern Daylight Time
//       8/15/2014 7:00:00 PM Pacific Daylight Time
//       8/22/2014 7:30:00 PM Eastern Daylight Time
//       8/28/2014 7:00:00 PM Eastern Daylight Time
Public Sub RestoreDateWithTimeZone()
    Dim fs As FileStream
    If File.Exists(filename) Then
        fs = New FileStream(filename, FileMode.Open)
    Else
        Console.WriteLine("Unable to find file to deserialize.")
        Exit Sub
    End If

    Dim formatter As New BinaryFormatter()
    Dim dates As DateWithTimeZone ()= Nothing
    Try
        dates = DirectCast(formatter.Deserialize(fs), DateWithTimeZone())
        ' Display dates.
        For Each dateInfo In dates
            Dim tz As TimeZoneInfo = dateInfo.TimeZone
            Console.WriteLine($"{dateInfo.DateTime} {If(tz.IsDaylightSavingTime(dateInfo.DateTime), tz.DaylightName, tz.StandardName)}")
        Next
    Catch e As SerializationException
        Console.WriteLine("Deserialization failed. Reason: {e.Message}")
    Finally
        If fs IsNot Nothing Then fs.Close()
    End Try
End Sub
' The example displays the following output:
'       8/9/2014 7:30:00 PM Eastern Daylight Time
'       8/15/2014 7:00:00 PM Pacific Daylight Time
'       8/22/2014 7:30:00 PM Eastern Daylight Time
'       8/28/2014 7:00:00 PM Eastern Daylight Time

Datum a čas vs. TimeSpanDateTime vs. TimeSpan

Typy hodnot TimeSpanase liší v tom, že TimeSpan představujeokamžitýčas,zatímcopředstavuječasovýinterval.DateTime DateTimeThe DateTime and TimeSpan value types differ in that a DateTime represents an instant in time whereas a TimeSpan represents a time interval. Můžete odečíst jednu instanci DateTime z druhé a TimeSpan získat tak objekt, který představuje časový interval mezi nimi.You can subtract one instance of DateTime from another to obtain a TimeSpan object that represents the time interval between them. Nebo můžete přidat kladnou TimeSpan DateTime hodnotu k aktuálnímu DateTime pro získání hodnoty, která představuje budoucí datum.Or you could add a positive TimeSpan to the current DateTime to obtain a DateTime value that represents a future date.

Můžete přidat nebo odečíst časový interval z DateTime objektu.You can add or subtract a time interval from a DateTime object. Časové intervaly můžou být záporné nebo kladné a dají se vyjádřit v jednotkách, jako jsou takty, sekundy nebo jako TimeSpan objekt.Time intervals can be negative or positive, and they can be expressed in units such as ticks, seconds, or as a TimeSpan object.

Porovnávání pro rovnost v rámci toleranceComparing for equality within tolerance

Porovnávání rovnosti DateTime pro hodnoty je přesné.Equality comparisons for DateTime values are exact. To znamená, že dvě hodnoty musí být vyjádřeny jako stejný počet značek, které mají být považovány za stejné.That means two values must be expressed as the same number of ticks to be considered equal. Tato přesnost je často pro mnoho aplikací zbytečná nebo dokonce nesprávná.That precision is often unnecessary or even incorrect for many applications. Často je vhodné otestovat, zda DateTime jsou objekty zhruba stejné.Often, you want to test if DateTime objects are roughly equal.

Následující příklad ukazuje, jak porovnat zhruba ekvivalentní DateTime hodnoty.The following example demonstrates how to compare roughly equivalent DateTime values. Při deklaraci rovnosti přijímá malý okraj rozdílu.It accepts a small margin of difference when declaring them equal.

[!code-csharpSystem.DateTime.Comparisons#1][!code-csharpSystem.DateTime.Comparisons#1]

Public Shared Function RoughlyEquals(time As DateTime, timeWithWindow As DateTime,
                             windowInSeconds As Integer,
                             frequencyInSeconds As Integer) As Boolean
    Dim delta As Long = (timeWithWindow.Subtract(time)).TotalSeconds _
                                            Mod frequencyInSeconds

    If delta > windowInSeconds Then
        delta = frequencyInSeconds - delta
    End If

    Return Math.Abs(delta) < windowInSeconds
End Function

Public Shared Sub TestRoughlyEquals()
    Dim window As Integer = 10
    Dim freq As Integer = 60 * 60 * 2 ' 2 hours;
    Dim d1 As DateTime = DateTime.Now

    Dim d2 As DateTime = d1.AddSeconds(2 * window)
    Dim d3 As DateTime = d1.AddSeconds(-2 * window)
    Dim d4 As DateTime = d1.AddSeconds(window / 2)
    Dim d5 As DateTime = d1.AddSeconds(-window / 2)

    Dim d6 As DateTime = d1.AddHours(2).AddSeconds(2 * window)
    Dim d7 As DateTime = d1.AddHours(2).AddSeconds(-2 * window)
    Dim d8 As DateTime = d1.AddHours(2).AddSeconds(window / 2)
    Dim d9 As DateTime = d1.AddHours(2).AddSeconds(-window / 2)

    Console.WriteLine($"d1 ({d1}) ~= d1 ({d1}): {RoughlyEquals(d1, d1, window, freq)}")
    Console.WriteLine($"d1 ({d1}) ~= d2 ({d2}): {RoughlyEquals(d1, d2, window, freq)}")
    Console.WriteLine($"d1 ({d1}) ~= d3 ({d3}): {RoughlyEquals(d1, d3, window, freq)}")
    Console.WriteLine($"d1 ({d1}) ~= d4 ({d4}): {RoughlyEquals(d1, d4, window, freq)}")
    Console.WriteLine($"d1 ({d1}) ~= d5 ({d5}): {RoughlyEquals(d1, d5, window, freq)}")

    Console.WriteLine($"d1 ({d1}) ~= d6 ({d6}): {RoughlyEquals(d1, d6, window, freq)}")
    Console.WriteLine($"d1 ({d1}) ~= d7 ({d7}): {RoughlyEquals(d1, d7, window, freq)}")
    Console.WriteLine($"d1 ({d1}) ~= d8 ({d8}): {RoughlyEquals(d1, d8, window, freq)}")
    Console.WriteLine($"d1 ({d1}) ~= d9 ({d9}): {RoughlyEquals(d1, d9, window, freq)}")
End Sub
' The example displays output similar to the following:
'    d1 (1/28/2010 9:01:26 PM) ~= d1 (1/28/2010 9:01:26 PM): True
'    d1 (1/28/2010 9:01:26 PM) ~= d2 (1/28/2010 9:01:46 PM): False
'    d1 (1/28/2010 9:01:26 PM) ~= d3 (1/28/2010 9:01:06 PM): False
'    d1 (1/28/2010 9:01:26 PM) ~= d4 (1/28/2010 9:01:31 PM): True
'    d1 (1/28/2010 9:01:26 PM) ~= d5 (1/28/2010 9:01:21 PM): True
'    d1 (1/28/2010 9:01:26 PM) ~= d6 (1/28/2010 11:01:46 PM): False
'    d1 (1/28/2010 9:01:26 PM) ~= d7 (1/28/2010 11:01:06 PM): False
'    d1 (1/28/2010 9:01:26 PM) ~= d8 (1/28/2010 11:01:31 PM): True
'    d1 (1/28/2010 9:01:26 PM) ~= d9 (1/28/2010 11:01:21 PM): True

Hlediska zprostředkovatele komunikace s objektyCOM interop considerations

DateTime Hodnota, která se přenáší do aplikace modelu COM, se pak přenese zpátky do spravované aplikace, která se označuje jako operace odezvy.A DateTime value that is transferred to a COM application, then is transferred back to a managed application, is said to round-trip. DateTime Hodnota, která specifikuje jenom čas, ale nezaokrouhluje, jak by to bylo možné očekávat.However, a DateTime value that specifies only a time does not round-trip as you might expect.

Pokud se operace Round-Trip jenom časem, například 3 hodiny, konečné datum a čas končí 30.1899 0001If you round-trip only a time, such as 3 P.M., the final date and time is December 30, 1899 C.E. v 3:00 hodiny místo ledna, 1, 0001 0001at 3:00 P.M., instead of January, 1, 0001 C.E. v 3:00. odp.at 3:00 P.M. .NET Framework a COM předpokládají výchozí datum, je-li zadán pouze čas.The .NET Framework and COM assume a default date when only a time is specified. Systém COM však předpokládá základní datum 30. prosince 1899 0001, zatímco .NET Framework předpokládá základní datum v lednu, 1, 0001 0001.However, the COM system assumes a base date of December 30, 1899 C.E., while the .NET Framework assumes a base date of January, 1, 0001 C.E.

Pokud je předána pouze doba z .NET Framework do modelu COM, je prováděno speciální zpracování, které převede čas na formát používaný modelem COM.When only a time is passed from the .NET Framework to COM, special processing is performed that converts the time to the format used by COM. Pokud je předán pouze čas z modelu COM do .NET Framework, není provedeno žádné zvláštní zpracování, protože by došlo k poškození legitimního data a času do 30. prosince 1899.When only a time is passed from COM to the .NET Framework, no special processing is performed because that would corrupt legitimate dates and times on or before December 30, 1899. Pokud datum začíná zpáteční cestou z modelu COM, .NET Framework a model COM zachovávají datum.If a date starts its round-trip from COM, the .NET Framework and COM preserve the date.

Chování .NET Framework a modelu COM znamená, že pokud vaše aplikace DateTime bude zapomenout, že pouze určuje čas, aplikace musí pamatovat na změnu nebo ignorovat chybné datum z posledního DateTime objektu.The behavior of the .NET Framework and COM means that if your application round-trips a DateTime that only specifies a time, your application must remember to modify or ignore the erroneous date from the final DateTime object.

Konstruktory

DateTime(Int32, Int32, Int32)

Inicializuje novou instanci DateTime struktury na zadaný rok, měsíc a den.Initializes a new instance of the DateTime structure to the specified year, month, and day.

DateTime(Int32, Int32, Int32, Calendar)

Inicializuje novou instanci DateTime struktury na zadaný rok, měsíc a den pro zadaný kalendář.Initializes a new instance of the DateTime structure to the specified year, month, and day for the specified calendar.

DateTime(Int32, Int32, Int32, Int32, Int32, Int32)

Inicializuje novou instanci DateTime struktury na zadaný rok, měsíc, den, hodinu, minutu a sekundu.Initializes a new instance of the DateTime structure to the specified year, month, day, hour, minute, and second.

DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Calendar)

Inicializuje novou instanci DateTime struktury na zadaný rok, měsíc, den, hodinu, minutu a sekundu pro zadaný kalendář.Initializes a new instance of the DateTime structure to the specified year, month, day, hour, minute, and second for the specified calendar.

DateTime(Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind)

Inicializuje novou instanci DateTime struktury na zadaný rok, měsíc, den, hodinu, minutu, sekundu a koordinovaný světový čas (UTC) nebo místní čas.Initializes a new instance of the DateTime structure to the specified year, month, day, hour, minute, second, and Coordinated Universal Time (UTC) or local time.

DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32)

Inicializuje novou instanci DateTime struktury na zadaný rok, měsíc, den, hodinu, minutu, sekundu a milisekundu.Initializes a new instance of the DateTime structure to the specified year, month, day, hour, minute, second, and millisecond.

DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar)

Inicializuje novou instanci DateTime struktury na zadaný rok, měsíc, den, hodinu, minutu, sekundu a milisekundu pro zadaný kalendář.Initializes a new instance of the DateTime structure to the specified year, month, day, hour, minute, second, and millisecond for the specified calendar.

DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar, DateTimeKind)

Inicializuje novou instanci DateTime struktury na zadaný rok, měsíc, den, hodinu, minutu, sekundu, milisekundu a koordinovaný světový čas (UTC) nebo místní čas pro zadaný kalendář.Initializes a new instance of the DateTime structure to the specified year, month, day, hour, minute, second, millisecond, and Coordinated Universal Time (UTC) or local time for the specified calendar.

DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind)

Inicializuje novou instanci DateTime struktury na zadaný rok, měsíc, den, hodinu, minutu, sekundu, milisekundu a koordinovaný světový čas (UTC) nebo místní čas.Initializes a new instance of the DateTime structure to the specified year, month, day, hour, minute, second, millisecond, and Coordinated Universal Time (UTC) or local time.

DateTime(Int64)

Inicializuje novou instanci DateTime struktury na zadaný počet tiků.Initializes a new instance of the DateTime structure to a specified number of ticks.

DateTime(Int64, DateTimeKind)

Inicializuje novou instanci DateTime struktury na zadaný počet tiků a koordinovaný světový čas (UTC) nebo místní čas.Initializes a new instance of the DateTime structure to a specified number of ticks and to Coordinated Universal Time (UTC) or local time.

Pole

MaxValue

Představuje největší možnou hodnotu DateTime.Represents the largest possible value of DateTime. Toto pole je jen pro čtení.This field is read-only.

MinValue

Představuje nejmenší možnou hodnotu DateTime.Represents the smallest possible value of DateTime. Toto pole je jen pro čtení.This field is read-only.

UnixEpoch

Vlastnosti

Date

Získá komponentu data této instance.Gets the date component of this instance.

Day

Načte den v měsíci reprezentovaný touto instancí.Gets the day of the month represented by this instance.

DayOfWeek

Vrátí den v týdnu reprezentovaný touto instancí.Gets the day of the week represented by this instance.

DayOfYear

Získá den v roce reprezentovaný touto instancí.Gets the day of the year represented by this instance.

Hour

Získá komponentu hodiny data reprezentované touto instancí.Gets the hour component of the date represented by this instance.

Kind

Získá hodnotu, která označuje, zda je čas reprezentovaný touto instancí založen na místním čase, koordinovaném univerzálním času (UTC) nebo žádném z těchto možností.Gets a value that indicates whether the time represented by this instance is based on local time, Coordinated Universal Time (UTC), or neither.

Millisecond

Načte komponentu milisekund data reprezentované touto instancí.Gets the milliseconds component of the date represented by this instance.

Minute

Načte komponentu minuty data reprezentované touto instancí.Gets the minute component of the date represented by this instance.

Month

Načte komponentu měsíce data reprezentované touto instancí.Gets the month component of the date represented by this instance.

Now

DateTime Získá objekt, který je nastaven na aktuální datum a čas v tomto počítači vyjádřený jako místní čas.Gets a DateTime object that is set to the current date and time on this computer, expressed as the local time.

Second

Získá komponentu sekund data reprezentované touto instancí.Gets the seconds component of the date represented by this instance.

Ticks

Získá počet tiků, které reprezentují datum a čas této instance.Gets the number of ticks that represent the date and time of this instance.

TimeOfDay

Získá denní dobu této instance.Gets the time of day for this instance.

Today

Získá aktuální datum.Gets the current date.

UtcNow

DateTime Získá objekt, který je nastaven na aktuální datum a čas v tomto počítači, vyjádřený jako koordinovaný světový čas (UTC).Gets a DateTime object that is set to the current date and time on this computer, expressed as the Coordinated Universal Time (UTC).

Year

Získá komponentu roku data reprezentované touto instancí.Gets the year component of the date represented by this instance.

Metody

Add(TimeSpan)

Vrátí nový DateTime , který přidá hodnotu zadaného TimeSpan do hodnoty této instance.Returns a new DateTime that adds the value of the specified TimeSpan to the value of this instance.

AddDays(Double)

Vrátí nový DateTime , který přidá zadaný počet dní do hodnoty této instance.Returns a new DateTime that adds the specified number of days to the value of this instance.

AddHours(Double)

Vrátí nový DateTime , který přidá zadaný počet hodin do hodnoty této instance.Returns a new DateTime that adds the specified number of hours to the value of this instance.

AddMilliseconds(Double)

Vrátí nový DateTime , který přidá zadaný počet milisekund k hodnotě této instance.Returns a new DateTime that adds the specified number of milliseconds to the value of this instance.

AddMinutes(Double)

Vrátí nový DateTime , který přidá zadaný počet minut k hodnotě této instance.Returns a new DateTime that adds the specified number of minutes to the value of this instance.

AddMonths(Int32)

Vrátí nový DateTime , který přičte zadaný počet měsíců k hodnotě této instance.Returns a new DateTime that adds the specified number of months to the value of this instance.

AddSeconds(Double)

Vrátí nový DateTime , který přidá zadaný počet sekund k hodnotě této instance.Returns a new DateTime that adds the specified number of seconds to the value of this instance.

AddTicks(Int64)

Vrátí nový DateTime , který přidá zadaný počet tiků k hodnotě této instance.Returns a new DateTime that adds the specified number of ticks to the value of this instance.

AddYears(Int32)

Vrátí nový DateTime , který přidá zadaný počet roků k hodnotě této instance.Returns a new DateTime that adds the specified number of years to the value of this instance.

Compare(DateTime, DateTime)

Porovná dvě instance DateTime a vrátí celé číslo, které označuje, zda první instance je dřívější než, stejné jako nebo pozdější než druhá instance.Compares two instances of DateTime and returns an integer that indicates whether the first instance is earlier than, the same as, or later than the second instance.

CompareTo(DateTime)

Porovná hodnotu této instance se zadanou DateTime hodnotou a vrátí celé číslo, které označuje, zda je tato instance starší než, stejná jako nebo vyšší než zadaná DateTime hodnota.Compares the value of this instance to a specified DateTime value and returns an integer that indicates whether this instance is earlier than, the same as, or later than the specified DateTime value.

CompareTo(Object)

Porovná hodnotu této instance se zadaným objektem, který obsahuje zadanou DateTime hodnotu, a vrátí celé číslo, které označuje, zda je tato instance starší než, stejná jako nebo vyšší než zadaná DateTime hodnota.Compares the value of this instance to a specified object that contains a specified DateTime value, and returns an integer that indicates whether this instance is earlier than, the same as, or later than the specified DateTime value.

DaysInMonth(Int32, Int32)

Vrátí počet dnů v zadaném měsíci a roce.Returns the number of days in the specified month and year.

Equals(DateTime)

Vrátí hodnotu, která označuje, zda je hodnota této instance rovna hodnotě zadané DateTime instance.Returns a value indicating whether the value of this instance is equal to the value of the specified DateTime instance.

Equals(DateTime, DateTime)

Vrátí hodnotu, která označuje, DateTime zda dvě instance mají stejnou hodnotu data a času.Returns a value indicating whether two DateTime instances have the same date and time value.

Equals(Object)

Vrací hodnotu, která určuje, zda je tato instance rovna zadanému objektu.Returns a value indicating whether this instance is equal to a specified object.

FromBinary(Int64)

Deserializace 64 binární hodnoty a znovu vytvoří původní serializovaný DateTime objekt.Deserializes a 64-bit binary value and recreates an original serialized DateTime object.

FromFileTime(Int64)

Převede zadaný čas souboru systému Windows na ekvivalentní místní čas.Converts the specified Windows file time to an equivalent local time.

FromFileTimeUtc(Int64)

Převede zadaný čas souboru systému Windows na ekvivalentní čas UTC.Converts the specified Windows file time to an equivalent UTC time.

FromOADate(Double)

DateTime Vrátí ekvivalent zadaného data automatizace OLE.Returns a DateTime equivalent to the specified OLE Automation Date.

GetDateTimeFormats()

Převede hodnotu této instance na všechny řetězcové reprezentace podporované specifikátory standardního formátu data a času.Converts the value of this instance to all the string representations supported by the standard date and time format specifiers.

GetDateTimeFormats(Char)

Převede hodnotu této instance na všechny řetězcové reprezentace podporované zadaným specifikátorem standardního formátu data a času.Converts the value of this instance to all the string representations supported by the specified standard date and time format specifier.

GetDateTimeFormats(Char, IFormatProvider)

Převede hodnotu této instance na všechny řetězcové reprezentace podporované zadaným standardním specifikátorem formátu data a času a informace o formátování specifické pro jazykovou verzi.Converts the value of this instance to all the string representations supported by the specified standard date and time format specifier and culture-specific formatting information.

GetDateTimeFormats(IFormatProvider)

Převede hodnotu této instance na všechny řetězcové reprezentace podporované specifikátory standardního formátu data a času a zadané informace o formátování specifické pro jazykovou verzi.Converts the value of this instance to all the string representations supported by the standard date and time format specifiers and the specified culture-specific formatting information.

GetHashCode()

Vrátí kód hash této instance.Returns the hash code for this instance.

GetTypeCode()

Vrátí hodnotu DateTimepro typ hodnoty. TypeCodeReturns the TypeCode for value type DateTime.

IsDaylightSavingTime()

Určuje, zda DateTime je tato instance v rozmezí letního času pro aktuální časové pásmo.Indicates whether this instance of DateTime is within the daylight saving time range for the current time zone.

IsLeapYear(Int32)

Vrátí údaj, zda je zadaný rok přestupný rok.Returns an indication whether the specified year is a leap year.

Parse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles)

Převede rozsah paměti obsahující řetězcové vyjádření data a času na jeho DateTime ekvivalent pomocí informací o formátování specifických pro jazykovou verzi a stylu formátování.Converts a memory span that contains string representation of a date and time to its DateTime equivalent by using culture-specific format information and a formatting style.

Parse(String)

Převede řetězcové vyjádření data a času na jeho DateTime ekvivalent pomocí konvencí aktuální jazykové verze vlákna.Converts the string representation of a date and time to its DateTime equivalent by using the conventions of the current thread culture.

Parse(String, IFormatProvider)

Převede řetězcové vyjádření data a času na jeho DateTime ekvivalent pomocí informací o formátu specifické jazykové verze.Converts the string representation of a date and time to its DateTime equivalent by using culture-specific format information.

Parse(String, IFormatProvider, DateTimeStyles)

Převede řetězcové vyjádření data a času na jeho DateTime ekvivalent pomocí informací o formátování specifických pro jazykovou verzi a stylu formátování.Converts the string representation of a date and time to its DateTime equivalent by using culture-specific format information and a formatting style.

ParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles)
ParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles)
ParseExact(String, String, IFormatProvider)

Převede určenou řetězcovou reprezentaci data a času na svůj DateTime ekvivalent pomocí zadaného formátu a informací o formátu specifické jazykové verze.Converts the specified string representation of a date and time to its DateTime equivalent using the specified format and culture-specific format information. Formát řetězcového vyjádření musí přesně odpovídat určenému formátu.The format of the string representation must match the specified format exactly.

ParseExact(String, String, IFormatProvider, DateTimeStyles)

Převede určenou řetězcovou reprezentaci data a času na svůj DateTime ekvivalent pomocí zadaného formátu, jazykové informace specifické pro jazykovou verzi a stylu.Converts the specified string representation of a date and time to its DateTime equivalent using the specified format, culture-specific format information, and style. Formát řetězcového vyjádření musí přesně odpovídat určenému formátu nebo je vyvolána výjimka.The format of the string representation must match the specified format exactly or an exception is thrown.

ParseExact(String, String[], IFormatProvider, DateTimeStyles)

Převede určenou řetězcovou reprezentaci data a času na svůj DateTime ekvivalent pomocí zadaného pole formátů, informací o formátu specifických pro jazykovou verzi a stylu.Converts the specified string representation of a date and time to its DateTime equivalent using the specified array of formats, culture-specific format information, and style. Formát řetězcového vyjádření musí přesně odpovídat alespoň jednomu z určených formátů nebo je vyvolána výjimka.The format of the string representation must match at least one of the specified formats exactly or an exception is thrown.

SpecifyKind(DateTime, DateTimeKind)

Vytvoří nový DateTime objekt, který má stejný počet tiků jako zadaný DateTime, ale je určený buď místní čas, koordinovaný světový čas (UTC), nebo ani jeden, jak je určeno zadanou DateTimeKind hodnotou.Creates a new DateTime object that has the same number of ticks as the specified DateTime, but is designated as either local time, Coordinated Universal Time (UTC), or neither, as indicated by the specified DateTimeKind value.

Subtract(DateTime)

Vrátí nový DateTime , který odečte zadané datum a čas z hodnoty této instance.Returns a new DateTime that subtracts the specified date and time from the value of this instance.

Subtract(TimeSpan)

Vrátí nový DateTime , který odečte zadanou dobu od hodnoty této instance.Returns a new DateTime that subtracts the specified duration from the value of this instance.

ToBinary()

Zaserializace aktuálního DateTime objektu na 64 binární hodnotu, kterou lze následně použít k DateTime opětovnému vytvoření objektu.Serializes the current DateTime object to a 64-bit binary value that subsequently can be used to recreate the DateTime object.

ToFileTime()

Převede hodnotu aktuálního DateTime objektu na čas souboru systému Windows.Converts the value of the current DateTime object to a Windows file time.

ToFileTimeUtc()

Převede hodnotu aktuálního DateTime objektu na čas souboru systému Windows.Converts the value of the current DateTime object to a Windows file time.

ToLocalTime()

Převede hodnotu aktuálního DateTime objektu na místní čas.Converts the value of the current DateTime object to local time.

ToLongDateString()

Převede hodnotu aktuálního DateTime objektu na jeho ekvivalentní řetězcové vyjádření dlouhého data.Converts the value of the current DateTime object to its equivalent long date string representation.

ToLongTimeString()

Převede hodnotu aktuálního DateTime objektu na jeho ekvivalent dlouhé řetězcové vyjádření.Converts the value of the current DateTime object to its equivalent long time string representation.

ToOADate()

Převede hodnotu této instance na ekvivalentní datum automatizace OLE.Converts the value of this instance to the equivalent OLE Automation date.

ToShortDateString()

Převede hodnotu aktuálního DateTime objektu na jeho ekvivalentní řetězcové vyjádření krátkého data.Converts the value of the current DateTime object to its equivalent short date string representation.

ToShortTimeString()

Převede hodnotu aktuálního DateTime objektu na odpovídající řetězcovou reprezentaci krátkého času.Converts the value of the current DateTime object to its equivalent short time string representation.

ToString()

Převede hodnotu aktuálního DateTime objektu na odpovídající řetězcovou reprezentaci pomocí formátovacích úmluv aktuální jazykové verze.Converts the value of the current DateTime object to its equivalent string representation using the formatting conventions of the current culture.

ToString(IFormatProvider)

Převede hodnotu aktuálního DateTime objektu na odpovídající řetězcovou reprezentaci pomocí zadaných informací o formátu specifické jazykové verze.Converts the value of the current DateTime object to its equivalent string representation using the specified culture-specific format information.

ToString(String)

Převede hodnotu aktuálního DateTime objektu na odpovídající řetězcovou reprezentaci pomocí zadaného formátu a formátovacích úmluv aktuální jazykové verze.Converts the value of the current DateTime object to its equivalent string representation using the specified format and the formatting conventions of the current culture.

ToString(String, IFormatProvider)

Převede hodnotu aktuálního DateTime objektu na odpovídající řetězcovou reprezentaci pomocí zadaného formátu a informací o formátu specifické jazykové verze.Converts the value of the current DateTime object to its equivalent string representation using the specified format and culture-specific format information.

ToUniversalTime()

Převede hodnotu aktuálního DateTime objektu na koordinovaný světový čas (UTC).Converts the value of the current DateTime object to Coordinated Universal Time (UTC).

TryFormat(Span<Char>, Int32, ReadOnlySpan<Char>, IFormatProvider)
TryParse(ReadOnlySpan<Char>, DateTime)
TryParse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime)
TryParse(String, DateTime)

Převede určenou řetězcovou reprezentaci data a času na její DateTime ekvivalent a vrátí hodnotu, která označuje, zda byl převod úspěšný.Converts the specified string representation of a date and time to its DateTime equivalent and returns a value that indicates whether the conversion succeeded.

TryParse(String, IFormatProvider, DateTimeStyles, DateTime)

Převede zadanou řetězcovou reprezentaci data a času na svůj DateTime ekvivalent pomocí zadaných informací o formátování a stylu formátování specifické jazykové verze a vrátí hodnotu, která označuje, zda byl převod úspěšný.Converts the specified string representation of a date and time to its DateTime equivalent using the specified culture-specific format information and formatting style, and returns a value that indicates whether the conversion succeeded.

TryParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime)
TryParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles, DateTime)
TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime)

Převede určenou řetězcovou reprezentaci data a času na svůj DateTime ekvivalent pomocí zadaného formátu, jazykové informace specifické pro jazykovou verzi a stylu.Converts the specified string representation of a date and time to its DateTime equivalent using the specified format, culture-specific format information, and style. Formát řetězcového vyjádření musí přesně odpovídat určenému formátu.The format of the string representation must match the specified format exactly. Metoda vrátí hodnotu, která označuje, zda převod proběhl úspěšně.The method returns a value that indicates whether the conversion succeeded.

TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime)

Převede určenou řetězcovou reprezentaci data a času na svůj DateTime ekvivalent pomocí zadaného pole formátů, informací o formátu specifických pro jazykovou verzi a stylu.Converts the specified string representation of a date and time to its DateTime equivalent using the specified array of formats, culture-specific format information, and style. Formát řetězcového vyjádření musí přesně odpovídat alespoň jednomu z určených formátů.The format of the string representation must match at least one of the specified formats exactly. Metoda vrátí hodnotu, která označuje, zda převod proběhl úspěšně.The method returns a value that indicates whether the conversion succeeded.

Operátory

Addition(DateTime, TimeSpan)

Přidá zadaný časový interval do zadaného data a času a vrátí nový datum a čas.Adds a specified time interval to a specified date and time, yielding a new date and time.

Equality(DateTime, DateTime)

Určuje, zda DateTime jsou dvě zadané instance stejné.Determines whether two specified instances of DateTime are equal.

GreaterThan(DateTime, DateTime)

Určuje, zda je DateTime jeden z určených pozdější než DateTimejiné.Determines whether one specified DateTime is later than another specified DateTime.

GreaterThanOrEqual(DateTime, DateTime)

Určuje, zda jeden DateTime ze zadaných hodnot představuje datum a čas, který je stejný jako nebo pozdější než DateTimejiné zadané.Determines whether one specified DateTime represents a date and time that is the same as or later than another specified DateTime.

Inequality(DateTime, DateTime)

Určuje, zda dvě zadané instance DateTime nejsou stejné.Determines whether two specified instances of DateTime are not equal.

LessThan(DateTime, DateTime)

Určuje, zda je DateTime jeden ze zadaných hodnot dřívější DateTimenež jiné.Determines whether one specified DateTime is earlier than another specified DateTime.

LessThanOrEqual(DateTime, DateTime)

Určuje, zda jeden DateTime ze zadaných hodnot představuje datum a čas, který je stejný jako nebo dřívější než DateTimejiné zadané.Determines whether one specified DateTime represents a date and time that is the same as or earlier than another specified DateTime.

Subtraction(DateTime, DateTime)

Odečte zadané datum a čas z jiného zadaného data a času a vrátí časový interval.Subtracts a specified date and time from another specified date and time and returns a time interval.

Subtraction(DateTime, TimeSpan)

Odečte zadaný časový interval od zadaného data a času a vrátí nové datum a čas.Subtracts a specified time interval from a specified date and time and returns a new date and time.

Explicitní implementace rozhraní

IComparable.CompareTo(Object)
IConvertible.GetTypeCode()
IConvertible.ToBoolean(IFormatProvider)

Tento převod není podporován.This conversion is not supported. Pokus o použití této metody vyvolá InvalidCastExceptionvýjimku.Attempting to use this method throws an InvalidCastException.

IConvertible.ToByte(IFormatProvider)

Tento převod není podporován.This conversion is not supported. Pokus o použití této metody vyvolá InvalidCastExceptionvýjimku.Attempting to use this method throws an InvalidCastException.

IConvertible.ToChar(IFormatProvider)

Tento převod není podporován.This conversion is not supported. Pokus o použití této metody vyvolá InvalidCastExceptionvýjimku.Attempting to use this method throws an InvalidCastException.

IConvertible.ToDateTime(IFormatProvider)

Vrátí aktuální DateTime objekt.Returns the current DateTime object.

IConvertible.ToDecimal(IFormatProvider)

Tento převod není podporován.This conversion is not supported. Pokus o použití této metody vyvolá InvalidCastExceptionvýjimku.Attempting to use this method throws an InvalidCastException.

IConvertible.ToDouble(IFormatProvider)

Tento převod není podporován.This conversion is not supported. Pokus o použití této metody vyvolá InvalidCastExceptionvýjimku.Attempting to use this method throws an InvalidCastException.

IConvertible.ToInt16(IFormatProvider)

Tento převod není podporován.This conversion is not supported. Pokus o použití této metody vyvolá InvalidCastExceptionvýjimku.Attempting to use this method throws an InvalidCastException.

IConvertible.ToInt32(IFormatProvider)

Tento převod není podporován.This conversion is not supported. Pokus o použití této metody vyvolá InvalidCastExceptionvýjimku.Attempting to use this method throws an InvalidCastException.

IConvertible.ToInt64(IFormatProvider)

Tento převod není podporován.This conversion is not supported. Pokus o použití této metody vyvolá InvalidCastExceptionvýjimku.Attempting to use this method throws an InvalidCastException.

IConvertible.ToSByte(IFormatProvider)

Tento převod není podporován.This conversion is not supported. Pokus o použití této metody vyvolá InvalidCastExceptionvýjimku.Attempting to use this method throws an InvalidCastException.

IConvertible.ToSingle(IFormatProvider)

Tento převod není podporován.This conversion is not supported. Pokus o použití této metody vyvolá InvalidCastExceptionvýjimku.Attempting to use this method throws an InvalidCastException.

IConvertible.ToType(Type, IFormatProvider)

Převede aktuální DateTime objekt na objekt zadaného typu.Converts the current DateTime object to an object of a specified type.

IConvertible.ToUInt16(IFormatProvider)

Tento převod není podporován.This conversion is not supported. Pokus o použití této metody vyvolá InvalidCastExceptionvýjimku.Attempting to use this method throws an InvalidCastException.

IConvertible.ToUInt32(IFormatProvider)

Tento převod není podporován.This conversion is not supported. Pokus o použití této metody vyvolá InvalidCastExceptionvýjimku.Attempting to use this method throws an InvalidCastException.

IConvertible.ToUInt64(IFormatProvider)

Tento převod není podporován.This conversion is not supported. Pokus o použití této metody vyvolá InvalidCastExceptionvýjimku.Attempting to use this method throws an InvalidCastException.

ISerializable.GetObjectData(SerializationInfo, StreamingContext)

Naplní DateTime objekt daty potřebnými k serializaci aktuálního objektu. SerializationInfoPopulates a SerializationInfo object with the data needed to serialize the current DateTime object.

Platí pro

Bezpečný přístup z více vláken

Všechny členy tohoto typu jsou zabezpečeny pro přístup z více vláken.All members of this type are thread safe. Členy, které patrně upravují stav instance, ve skutečnosti vrací novou instanci inicializovanou s použitím nové hodnoty.Members that appear to modify instance state actually return a new instance initialized with the new value. Jako u jakéhokoli typu, čtení a zápis do sdílené proměnné, která obsahuje instanci tohoto typu, musí být chráněn zámkem, který zaručí bezpečný přístup z více vláken.As with any other type, reading and writing to a shared variable that contains an instance of this type must be protected by a lock to guarantee thread safety.

Viz také