DateTime DateTime DateTime DateTime Struct

Definicja

Reprezentuje moment w czasie, zwykle wyrażona jako datę i godzinę. 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
[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
Dziedziczenie
Atrybuty
SerializableAttribute
Implementuje

Uwagi

Uwaga

Przykłady języka C#, w tym artykule są uruchamiane w Try.NET modułu uruchamiającego testy i Plac zabaw dla kodu wbudowanego.The C# examples in this article run in the Try.NET inline code runner and playground. Wybierz Uruchom przycisk, aby uruchomić przykład, w oknie interaktywnym.Select the Run button to run an example in an interactive window. Po wykonaniu kodu, możesz go zmodyfikować i uruchomić zmodyfikowany kod, wybierając Uruchom ponownie.Once you execute the code, you can modify it and run the modified code by selecting Run again. Zmodyfikowanego kodu albo działa w oknie interaktywnym lub, jeśli kompilacja nie powiedzie się, w oknie interaktywnym Wyświetla wszystkie C# kompilatora komunikaty o błędach.The modified code either runs in the interactive window or, if compilation fails, the interactive window displays all C# compiler error messages.

Lokalnej strefy czasowej z Try.NET wbudowany kod modułu uruchamiającego testy i placu zabaw jest uniwersalny czas koordynowany lub czasu UTC.The local time zone of the Try.NET inline code runner and playground is Coordinated Universal Time, or UTC. Może to wpłynąć na zachowanie i dane wyjściowe przykłady ilustrujące DateTime, DateTimeOffset, i TimeZoneInfo typów i ich członków.This may affect the behavior and the output of examples that illustrate the DateTime, DateTimeOffset, and TimeZoneInfo types and their members.

W tym artykule przedstawiono kilka przykładów, które używają DateTime typu:This article includes several examples that use the DateTime type:

Przykłady inicjalizacji Initialization Examples
Wywołaj Konstruktor Invoke a constructor
Wywoływanie niejawnego domyślnego konstruktora Invoke the implicit default constructor
Przypisanie z wartości zwracanej Assignment from return value
Podczas analizowania ciągu, który reprezentuje datę i godzinę Parsing a string that represents a date and time
Składnia języka Visual Basic można zainicjować daty i godzinyVisual Basic syntax to initialize a date and time

Formatowanie DateTime obiekty jako ciągiFormatting DateTime objects as strings
Użyj domyślnego format daty i godziny Use the default date time format
Formatowanie daty i godziny, używając określonej kultury Format a date and time using a specific culture
Format daty godziny przy użyciu ciągu formatu standardowego lub niestandardowego Format a date time using a standard or custom format string
Określ zarówno ciąg formatu, jak i określonej kultury Specify both a format string and a specific culture
Format daty godziny przy użyciu standardu ISO 8601 dla usług sieci webFormat a date time using the ISO 8601 standard for web services

Analiza składniowa ciągów jako DateTime obiektówParsing strings as DateTime objects
Użyj Parse lub TryParse do przekonwertowania ciągu na datę i godzinę Use Parse or TryParse to convert a string to a date and time
Użyj ParseExact lub TryParseExact do przekonwertowania na ciąg w formacie znane Use ParseExact or TryParseExact to convert a string in a known format
Przekonwertować z reprezentacji ciągu ISO 8601 do daty i godzinyConvert from the ISO 8601 string representation to a date and time

DateTime RozdzielczośćDateTime resolution
Zapoznaj się z rozwiązania dla wartości daty i godziny Explore the resolution of date and time values
Porównanie dla równości w granicach tolerancjiComparing for equality within a tolerance

Kultura i kalendarzeCulture and calendars
Wyświetlanie wartości daty i godziny, używane kalendarze określonej kultury Display date and time values using culture specific calendars
Analizowanie ciągów zgodnie z określonym kalendarzu kultury Parse strings according to a culture specific calendar
Inicjowanie datę i godzinę, z kalendarza określonej kultury Initialize a date and time from a specific culture's calendar
Uzyskiwanie dostępu do właściwości daty i godziny przy użyciu kalendarza określonej kultury Accessing date and time properties using a specific culture's calendar
Trwa pobieranie tydzień roku, używane kalendarze określonej kulturyRetrieving the week of the year using culture specific calendars

TrwałośćPersistence
Przechowywanie wartości daty i godziny jako ciągi w lokalnej strefie czasowej Persisting date and time values as strings in the local time zone
Przechowywanie wartości daty i godziny jako ciąg w formacie niezmiennej kultury i godziny Persisting date and time values as strings in a culture and time invariant format
Przechowywanie wartości daty i godziny jako liczby całkowite Persisting date and time values as integers
Przechowywanie daty i godziny wartości przy użyciu XmlSerializer Persisting date and time values using the XmlSerializer
Przechowywanie daty i godziny wartości przy użyciu BinaryFormatter Persisting date and time values using the BinaryFormatter
Przechowywanie wartości daty i godziny przy użyciu danych strefy czasowejPersisting date and time values with time zone data

Ta sekcja zawiera tematy dotyczące wielu typowych zastosowań DateTime struktury:This section contains topics for many common uses of the DateTime struct:

Inicjowanie DateTime obiektu Initializing a DateTime object
Wartości typu DateTime i ich reprezentacji ciągu DateTime values and their string representations
Analizowanie wartości daty/godziny z ciągów Parsing DateTime values from strings
Wartości daty/godziny DateTime values
Operacje typu DateTime DateTime operations
Data i godzina rozwiązania DateTime resolution
Wartości daty/godziny i kalendarze DateTime values and calendars
Przechowywanie wartości daty/godziny Persisting DateTime values
Vs daty/godziny. TimeSpan DateTime vs. TimeSpan
Porównanie dla równości w granicach tolerancji uwagi dotyczące współdziałania COMComparing for equality within tolerance COM interop considerations

DateTime Typ wartości reprezentuje daty i godziny z wartości z zakresu od 00:00:00 (północ), 1 stycznia 0001 Anno Domini (typowe Era) do 11:59:59 PM, — 31 grudzień 9999 r.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. (R). w kalendarzu gregoriańskim.(C.E.) in the Gregorian calendar.

Wartości typu Time są mierzone w jednostkach 100-nanosekundowych o nazwie taktów.Time values are measured in 100-nanosecond units called ticks. Określonej daty jest liczbę znaczników, od momentu 12:00 w dniu, stycznia 1, 0001A particular date is the number of ticks since 12:00 midnight, January 1, 0001 A.D. (R). w GregorianCalendar kalendarza.(C.E.) in the GregorianCalendar calendar. Liczba nie obejmuje znaczniki, które zostaną dodane przez przestępnym sekund.The number excludes ticks that would be added by leap seconds. Na przykład wartość impulsów, l 31241376000000000 reprezentuje datę piątek, 01 stycznia 0100, 12:00:00 w dniu.For example, a ticks value of 31241376000000000L represents the date Friday, January 01, 0100 12:00:00 midnight. A DateTime wartość zawsze jest wyrażona w ramach jawnego lub domyślnego kalendarza.A DateTime value is always expressed in the context of an explicit or default calendar.

Uwaga

Jeśli pracujesz z wartość impulsów, że chcesz przekonwertować niektórych innych interwał czasu, takich jak minut i sekund, należy użyć TimeSpan.TicksPerDay, TimeSpan.TicksPerHour, TimeSpan.TicksPerMinute, TimeSpan.TicksPerSecond, lub TimeSpan.TicksPerMillisecond stała w celu wykonania konwersji.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. Na przykład, aby dodać liczbę sekund, reprezentowane przez określoną liczbę taktów do Second składnika DateTime wartości, można użyć wyrażenia 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.

Źródło dla całego zestawu przykłady z tego artykułu można wyświetlić w jednym języka Visual Basic lub C# z repozytorium dokumentów w witrynie GitHub.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.

Uwaga

Alternatywa DateTime struktury jest praca z wartości daty i godziny w szczególności stref czasowych DateTimeOffset struktury.An alternative to the DateTime structure for working with date and time values in particular time zones is the DateTimeOffset structure. DateTimeOffset Struktury przechowuje informacje o datę i godzinę w prywatnej DateTime pola i liczbę minut, przez które, które daty i godziny różni się od czasu UTC w prywatnej Int16 pola.The 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. Dzięki temu możliwe DateTimeOffset wartość, aby odzwierciedlić czas w określonej strefie czasowej, natomiast DateTime wartość jednoznacznie może odzwierciedlać tylko czas UTC i godzinę w lokalnej strefie czasowej.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. Aby uzyskać informacje o tym, kiedy używać DateTime struktury lub DateTimeOffset struktury podczas pracy z wartości daty i godziny, zobacz Wybieranie pomiędzy DateTime, DateTimeOffset, TimeSpan i 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.

Inicjowanie obiektu typu DateTimeInitializing a DateTime object

Początkowa wartość można przypisać do nowego DateTime wartości na wiele różnych sposobów:You can assign an initial value to a new DateTime value in many different ways:

  • Wywołanie konstruktora, pojedynczo, gdzie możesz określić argumenty dla wartości, lub użyć niejawnego domyślnego konstruktora.Calling a constructor, either one where you specify arguments for values, or use the implicit default constructor.
  • Przypisywanie DateTime zwracana wartość właściwości lub metody.Assigning a DateTime to the return value of a property or method.
  • Podczas analizowania DateTime wartość z jego reprezentację ciągu.Parsing a DateTime value from its string representation.
  • Za pomocą funkcji języka Visual Basic do utworzenia wystąpienia DateTime.Using Visual Basic specific language features to instantiate a DateTime.

Poniższe fragmenty kodu przedstawiają przykłady każdego z nich:The following code snippets show examples of each:

Wywoływanie konstruktorówInvoke Constructors

Należy wywołać dowolną z przeciążeń DateTime Konstruktor, który określa elementy wartości daty i godziny (np. rok, miesiąc i dzień lub liczby taktów).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). Poniższy kod tworzy w określonym dniu, w którym używana jest DateTime konstruktora, określając rok, miesiąc, godzinę, minutę i sekundę.The following code creates a specific date using the DateTime constructor specifying the year, month, day, hour, minute, and second.

Dim date1 As New Date(2008, 5, 1, 8, 30, 52)
DateTime date1 = new DateTime(2008, 5, 1, 8, 30, 52);
Console.WriteLine(date1);

Wywołuje się DateTime struktury niejawnego domyślnego konstruktora, jeśli chcesz DateTime zainicjowany do wartości domyślnej.You invoke the DateTime structure's implicit default constructor when you want a DateTime initialized to its default value. (Aby uzyskać szczegółowe informacje na niejawnego domyślnego konstruktora typu wartości, zobacz typów wartości.) Niektóre kompilatory obsługują także zadeklarowanie DateTime wartości bez jawnie przypisywanie wartości do niego.(For details on the implicit default constructor of a value type, see Value Types.) Some compilers also support declaring a DateTime value without explicitly assigning a value to it. Powoduje również utworzenie wartości bez Jawne inicjowanie wartość domyślną.Creating a value without an explicit initialization also results in the default value. W poniższym przykładzie pokazano DateTime niejawnego domyślnego konstruktora w języku C# i Visual Basic, a także DateTime deklaracja bez przypisania w języku Visual Basic.The following example illustrates the DateTime implicit default constructor in C# and Visual Basic, as well as a DateTime declaration without assignment in Visual Basic.

Dim dat1 As 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(Date.MinValue))

Dim dat2 As New DateTime()
' The following method call displays 1/1/0001 12:00:00 AM.
Console.WriteLine(dat2.ToString(System.Globalization.CultureInfo.InvariantCulture))
' The following method call displays True.
Console.WriteLine(dat2.Equals(Date.MinValue))
DateTime 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));

Przypisywanie obliczona wartośćAssigning a computed value

Możesz przypisać DateTime obiekt zwracany przez właściwość lub metoda wartości daty i godziny.You can assign the DateTime object a date and time value returned by a property or method. Poniższy przykład przypisuje bieżącą datę i czas, bieżącą datę uniwersalnego czasu koordynowanego (UTC) i czas i bieżącą datą trzy nowe DateTime zmiennych.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.

Dim date1 As Date = Date.Now
Dim date2 As Date = Date.UtcNow
Dim date3 As Date = Date.Today
DateTime date1 = DateTime.Now;
DateTime date2 = DateTime.UtcNow;
DateTime date3 = DateTime.Today;

Podczas analizowania ciągu, który reprezentuje wartość typu DateTimeParsing a string that represents a DateTime

Parse, ParseExact, TryParse, I TryParseExact wszystkie metody konwersji ciągu jego równoważna wartość daty i godziny.The Parse, ParseExact, TryParse, and TryParseExact methods all convert a string to its equivalent date and time value. W poniższych przykładach używane Parse i ParseExact metody, aby przeanalizować ciąg i przekonwertować go pod kątem DateTime wartość.The following examples use the Parse and ParseExact methods to parse a string and convert it to a DateTime value. Drugi format używa formularza obsługiwane przez ISO 8601 standard reprezentująca datę i godzinę w formacie ciągu.The second format uses a form supported by the ISO 8601 standard for a representing date and time in string format. Taka reprezentacja standardowego jest często używane do przesyłania informacji o dacie w usługach sieci web.This standard representation is often used to transfer date information in web services.

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

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

TryParse i TryParseExact metody wskazują, czy ciąg jest prawidłową reprezentacją DateTime wartość, a jeśli tak jest, wykonuje konwersję.The TryParse and TryParseExact methods indicate whether a string is a valid representation of a DateTime value and, if it is, performs the conversion.

Składnia charakterystyczny dla języka Visual BasicLanguage-specific syntax for Visual Basic

Inicjuje nowe wystąpienie następującą instrukcję języka Visual Basic DateTime wartość.The following Visual Basic statement initializes a new DateTime value.

Dim date1 As Date = #5/1/2008 8:30:52AM#

Wartości typu DateTime i ich reprezentacji ciąguDateTime values and their string representations

Wewnętrznie, wszystkie DateTime wartości są reprezentowane jako liczbę tyknięć (Liczba 100-nanosekundowych interwałów), które upłynęły od północy 12:00:00, 1 stycznia 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. Rzeczywiste DateTime wartość jest niezależna od sposobu, w którym ta wartość pojawia się pojawi.The actual DateTime value is independent of the way in which that value appears when displayed. Wygląd DateTime wartość jest wynikiem operacji formatowania, który konwertuje wartość na jego reprezentację ciągu.The appearance of a DateTime value is the result of a formatting operation that converts a value to its string representation.

Wyświetlanie wartości daty i godziny zależy od kultury, międzynarodowych standardów, wymagania dotyczące aplikacji i osobistych preferencji.The appearance of date and time values is dependent on culture, international standards, application requirements, and personal preference. DateTime Struktura zapewnia elastyczność w formatowaniu wartości daty i godziny za pomocą przeciążenia ToString.The DateTime structure offers flexibility in formatting date and time values through overloads of ToString. Wartość domyślna DateTime.ToString() metoda zwraca ciąg reprezentujący wartość daty i godziny przy użyciu bieżącej kultury daty krótkiej i wzorzec godziny długiej.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. W poniższym przykładzie użyto domyślnie DateTime.ToString() metody.The following example uses the default DateTime.ToString() method. Wyświetla datę i godzinę przy użyciu daty krótkiej i wzorzec godziny długiej dla bieżącej kultury.It displays the date and time using the short date and long time pattern for the current culture. Kultury en US jest bieżącą kulturę na komputerze, na którym uruchomiono przykładu.The en-US culture is the current culture on the computer on which the example was run.

DateTime date1 = new DateTime(2008, 3, 1, 7, 0, 0);
Console.WriteLine(date1.ToString());
// For en-US culture, displays 3/1/2008 7:00:00 AM
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

Może być konieczne do formatowania dat w określonej kultury do obsługi scenariuszy sieci web, gdzie serwer może być w innej kulturze 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. Określ, przy użyciu kultury DateTime.ToString(IFormatProvider) metodę w celu utworzenia daty krótkiej i długi czas reprezentacji w określonej kultury.You specify the culture using the DateTime.ToString(IFormatProvider) method to create the short date and long time representation in a specific culture. W poniższym przykładzie użyto DateTime.ToString(IFormatProvider) metodę, aby wyświetlić datę i godzinę przy użyciu daty krótkiej i wzorzec godziny długiej dla kultury 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.

DateTime date1 = new DateTime(2008, 3, 1, 7, 0, 0);
Console.WriteLine(date1.ToString(System.Globalization.CultureInfo.CreateSpecificCulture("fr-FR")));
// Displays 01/03/2008 07:00:00
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

Inne aplikacje mogą wymagać różnych ciągów reprezentujących daty.Other applications may require different string representations of a date. DateTime.ToString(String) Metoda zwraca ciąg reprezentujący zdefiniowane przez specyfikator formatu standardowego lub niestandardowego, przy użyciu konwencji formatowania bieżącej kultury.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. W poniższym przykładzie użyto DateTime.ToString(String) metodę w celu wyświetlenia pełnej daty i godziny wzorzec en US kultury bieżącej kultury, na komputerze, na którym uruchomiono przykładu.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.

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

Ponadto można określić kulturę i format za pomocą DateTime.ToString(String, IFormatProvider) metody.Finally, you can specify both the culture and the format using the DateTime.ToString(String, IFormatProvider) method. W poniższym przykładzie użyto DateTime.ToString(String, IFormatProvider) metodę w celu wyświetlenia pełnej daty i godziny wzorca dla kultury 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.

DateTime date1 = new DateTime(2008, 3, 1, 7, 0, 0);
Console.WriteLine(date1.ToString("F", new System.Globalization.CultureInfo("fr-FR")));
// Displays samedi 1 mars 2008 07:00:00
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) Przeciążenia można również za pomocą ciągu formatu niestandardowego, aby określić inne formaty.The DateTime.ToString(String) overload can also be used with a custom format string to specify other formats. Poniższy przykład pokazuje, jak sformatować ciąg za pośrednictwem ISO 8601 formatu standardowego, często używany dla usług sieci web.The following example shows how to format a string using the ISO 8601 standard format often used for web services. Format Iso 8601 nie ma odpowiedniego standardowym ciągiem formatującym.The Iso 8601 format does not have a corresponding standard format string.

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

Aby uzyskać więcej informacji na temat formatowania DateTime wartości, zobacz standardowych ciągów daty i godziny Format i Custom Date and Time Format Strings.For more information about formatting DateTime values, see Standard Date and Time Format Strings and Custom Date and Time Format Strings.

Analizowanie wartości daty/godziny z ciągówParsing DateTime values from strings

Analiza kodu konwertuje ciąg reprezentujący datę i godzinę na DateTime wartość.Parsing converts the string representation of a date and time to a DateTime value. Zazwyczaj ciągów daty i godziny mają dwa różne sposoby użycia w aplikacjach:Typically, date and time strings have two different usages in applications:

  • Data i godzina przyjmuje wiele form i odzwierciedlają konwencje kultury bieżącej lub określonej kultury.A date and time takes a variety of forms and reflects the conventions of either the current culture or a specific culture. Na przykład aplikacja umożliwia użytkownikowi którego bieżącą kulturą jest en US, aby wprowadzić wartość daty "12/15/2013" lub "15 grudnia 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". Pozwala użytkownikowi, którego bieżącą kulturą jest en-gb wprowadzanie wartości daty "12/15/2013" lub "15 grudnia 2013."It allows a user whose current culture is en-gb to input a date value as "15/12/2013" or "15 December 2013."

  • Data i godzina jest reprezentowana w wstępnie zdefiniowany format.A date and time is represented in a predefined format. Na przykład aplikacja wykonuje serializację daty w postaci "20130103", niezależnie od kultury, na którym działa aplikacja.For example, an application serializes a date as "20130103" independently of the culture on which the app is running. Aplikacja może wymagać dat można wprowadzić w formatu daty krótkiej dla bieżącej kultury.An application may require dates be input in the current culture's short date format.

Możesz użyć Parse lub TryParse metody do przekonwertowania ciągu z jednego z typowych formatów daty i godziny używany przez kulturę do DateTime wartości.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. Poniższy przykład pokazuje, jak można użyć TryParse do konwersji ciągów daty w różnych formatach specyficzne dla kultury do DateTime wartości.The following example shows how you can use TryParse to convert date strings in different culture-specific formats to a DateTime value. Bieżąca kultura jest zmieniana na język angielski (Wielka Brytania) i wywołuje GetDateTimeFormats() metoda generuje tablicę ciągów daty i godziny.It changes the current culture to English (Great Britain) and calls the GetDateTimeFormats() method to generate an array of date and time strings. Następnie przekazuje każdego elementu w tablicy do TryParse metody.It then passes each element in the array to the TryParse method. Dane wyjściowe z przykładu przedstawia metodę analizowania mógł pomyślnie konwertować wszystkich specyficzne dla kultury ciągów daty i godziny.The output from the example shows the parsing method was able to successfully convert each of the culture-specific date and time strings.

System.Threading.Thread.CurrentThread.CurrentCulture = 
    System.Globalization.CultureInfo.CreateSpecificCulture("en-GB");

DateTime date1 = new DateTime(2013, 6, 1, 12, 32, 30);
List<string> badFormats = new List<String>();

Console.WriteLine($"{"Date String",-37} {"Date",-19}\n");
foreach (var dateString in date1.GetDateTimeFormats())
{
    DateTime parsedDate;
    if (DateTime.TryParse(dateString, out parsedDate))
        Console.WriteLine($"{dateString,-37} {DateTime.Parse(dateString),-19}");
    else
        badFormats.Add(dateString);
}

// Display strings that could not be parsed.
if (badFormats.Count > 0)
{
    Console.WriteLine("\nStrings that could not be parsed: ");
    foreach (var badFormat in badFormats)
        Console.WriteLine($"   {badFormat}");
}
// Press "Run" to see the output
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB")

Dim date1 As DateTime = 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

Możesz użyć ParseExact i TryParseExact metody służące do konwersji ciągu, który musi być zgodny w określonym formacie lub formaty stosowane do DateTime wartości.You use the ParseExact and TryParseExact methods to convert a string that must match a particular format or formats to a DateTime value. Należy określić jedną lub więcej ciągów daty i godziny format jako parametr do metody analizy.You specify one or more date and time format strings as a parameter to the parsing method. W poniższym przykładzie użyto TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) metody do konwersji ciągów znaków, które muszą być w formacie "RRRRMMDD" lub "HHmmss" format DateTime wartości.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.

string[] formats = { "yyyyMMdd", "HHmmss" };
string[] dateStrings = { "20130816", "20131608", "  20130816   ",
                   "115216", "521116", "  115216  " };
DateTime parsedDate;

foreach (var dateString in dateStrings)
{
    if (DateTime.TryParseExact(dateString, formats, null,
                               System.Globalization.DateTimeStyles.AllowWhiteSpaces |
                               System.Globalization.DateTimeStyles.AdjustToUniversal,
                               out parsedDate))
        Console.WriteLine($"{dateString} --> {parsedDate:g}");
    else
        Console.WriteLine($"Cannot convert {dateString}");
}
// 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
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

Jeden typowym celem zastosowania ParseExact polega na przekonwertowaniu reprezentację ciągu z usługi sieci web, zazwyczaj w ISO 8601 formatu standardowego.One common use for ParseExact is to convert a string representation from a web service, usually in ISO 8601 standard format. Poniższy kod przedstawia parametry poprawnego formatu do użycia:The following code shows the correct format string to use:

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

Jeśli nie można przeanalizować ciągu, Parse i ParseExact metody zgłoszenie wyjątku.If a string cannot be parsed, the Parse and ParseExact methods throw an exception. TryParse i TryParseExact metody zwracają Boolean wartość wskazującą, czy konwersja powiodła się, czy nie powiodło się.The TryParse and TryParseExact methods return a Boolean value that indicates whether the conversion succeeded or failed. Należy używać TryParse lub TryParseExact metod w scenariuszach, w których wydajność jest ważna.You should use the TryParse or TryParseExact methods in scenarios where performance is important. Operacji analizowania ciągów daty i godziny, zwykle ma wysoki współczynnik błędów i wyjątków jest kosztowne.The parsing operation for date and time strings tends to have a high failure rate, and exception handling is expensive. Użyj tych metod, jeśli ciągi są dane wejściowe przez użytkowników lub pochodzące z nieznanego źródła.Use these methods if strings are input by users or coming from an unknown source.

Aby uzyskać więcej informacji na temat analizowania wartości daty i godziny, zobacz ciągi analizy daty i godziny.For more information about parsing date and time values, see Parsing Date and Time Strings.

Wartości typu DateTimeDateTime values

Opisy wartości czasu w DateTime typu są często wyrażane przy użyciu standardu uniwersalnego czasu koordynowanego (UTC).Descriptions of time values in the DateTime type are often expressed using the Coordinated Universal Time (UTC) standard. Uniwersalny czas koordynowany to nazwa międzynarodowo czas uniwersalny Greenwich (GMT).Coordinated Universal Time is the internationally recognized name for Greenwich Mean Time (GMT). Uniwersalny czas koordynowany to czas, mierzony o zerowej długości geograficznej stopni punktem początkowym UTC.Coordinated Universal Time is the time as measured at zero degrees longitude, the UTC origin point. Czas letni nie ma zastosowania względem czasu UTC.Daylight saving time is not applicable to UTC.

Czas lokalny jest określana względem daną strefę czasową.Local time is relative to a particular time zone. Strefa czasowa jest skojarzony z przesunięcia strefy czasowej.A time zone is associated with a time zone offset. Przesunięcie strefy czasowej to przesunięcie strefy czasowej, mierzone w godzinach od punktu pochodzenia UTC.A time zone offset is the displacement of the time zone measured in hours from the UTC origin point. Ponadto czas lokalny, opcjonalnie dotyczy czasu letniego, która zwiększa lub zmniejsza Ustawianie interwału czasu.In addition, local time is optionally affected by daylight saving time, which adds or subtracts a time interval adjustment. Czas lokalny jest obliczany przez dodanie przesunięcia strefy czasowej na UTC i dostosowywanie czasu w razie potrzeby.Local time is calculated by adding the time zone offset to UTC and adjusting for daylight saving time if necessary. Przesunięcie strefy czasowej w miejscu pochodzenia UTC wynosi zero.The time zone offset at the UTC origin point is zero.

Czas UTC jest odpowiednia dla obliczeń, porównań i przechowywania daty i godziny w plikach.UTC time is suitable for calculations, comparisons, and storing dates and time in files. Czas lokalny jest odpowiednia do wyświetlania w interfejsie użytkownika aplikacji komputerowych.Local time is appropriate for display in user interfaces of desktop applications. Uwzględniających strefy czasowe aplikacje (takie jak wiele aplikacji sieci Web) muszą pracować z liczbą innych strefach czasowych.Time zone-aware applications (such as many Web applications) also need to work with a number of other time zones.

Jeśli Kind właściwość DateTime obiekt jest DateTimeKind.Unspecified, jest nieokreślony, w czy czas reprezentowany jest czasu lokalnego, czasu UTC lub czasu w innych strefach czasowych.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.

Data i godzina rozwiązaniaDateTime resolution

Uwaga

Jako alternatywa dla wykonywania arytmetyka na daty i godziny DateTime wartości, aby zmierzyć czas, który upłynął, możesz użyć Stopwatch klasy.As an alternative to performing date and time arithmetic on DateTime values to measure elapsed time, you can use the Stopwatch class.

Ticks Właściwość wyraża wartości daty i godziny w jednostkach co 10 milionowych części sekundy.The Ticks property expresses date and time values in units of one ten-millionth of a second. Millisecond Właściwość zwraca tysięczne części sekundy w wartości daty i godziny.The Millisecond property returns the thousandths of a second in a date and time value. Za pomocą wielokrotnego wywołania DateTime.Now właściwości, aby zmierzyć czas jest zależny od zegara systemowego.Using repeated calls to the DateTime.Now property to measure elapsed time is dependent on the system clock. Zegar systemowy w systemach Windows 7 i Windows 8 ma rozdzielczość około 15 milisekund.The system clock on Windows 7 and Windows 8 systems has a resolution of approximately 15 milliseconds. To rozwiązanie ma wpływ na przedziały czasu małych mniej niż 100 MS.This resolution affects small time intervals less than 100 milliseconds.

Poniższy przykład ilustruje zależność wartości bieżącej daty i godziny od rozdzielczości zegara systemowego.The following example illustrates the dependence of current date and time values on the resolution of the system clock. W tym przykładzie zewnętrzna pętla powtarza 20 razy, a wewnętrzną pętlę służy do opóźnienia zewnętrzna pętla.In the example, an outer loop repeats 20 times, and an inner loop serves to delay the outer loop. Jeśli wartość licznika zewnętrzna pętla wynosi 10, wywołanie Thread.Sleep metody powoduje opóźnienia 5 milisekund.If the value of the outer loop counter is 10, a call to the Thread.Sleep method introduces a five-millisecond delay. Poniższy kod przedstawia liczbę milisekund, zwracany przez DateTime.Now.Milliseconds zmiany właściwości dopiero po wywołaniu Thread.Sleep.The following example shows the number of milliseconds returned by the DateTime.Now.Milliseconds property changes only after the call to Thread.Sleep.

String output = "";
for (int ctr = 0; ctr <= 20; ctr++)
{
    output += String.Format($"{DateTime.Now.Millisecond}\n");
    // Introduce a delay loop.
    for (int delay = 0; delay <= 1000; delay++)
    { }

    if (ctr == 10)
    {
        output += "Thread.Sleep called...\n";
        System.Threading.Thread.Sleep(5);
    }
}
Console.WriteLine(output);
// Press "Run" to see the output
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

Operacje typu DateTimeDateTime operations

Za pomocą obliczeń DateTime struktury, takich jak Add lub Subtract, nie modyfikuje wartości struktury.A calculation using a DateTime structure, such as Add or Subtract, does not modify the value of the structure. Zamiast tego zwraca nowy obliczenia DateTime struktury, którego wartość jest wynikiem obliczenia.Instead, the calculation returns a new DateTime structure whose value is the result of the calculation.

Operacje konwersji między strefami czasowymi (np. między czasem UTC i czasem lokalnym lub między strefami czasowymi, a drugi) uwzględnienia czasu letniego, ale nie obsługują operacje arytmetyczne i porównywania.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 zapewnia ograniczoną obsługę do konwertowania z jednej strefie czasowej.The DateTime structure itself offers limited support for converting from one time zone to another. Możesz użyć ToLocalTime można użyć metody do konwersji czasu UTC na czas lokalny lub ToUniversalTime metody konwersji z czasu lokalnego 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. Jednakże, pełny zestaw metody konwersji strefy czasowej jest dostępna w TimeZoneInfo klasy.However, a full set of time zone conversion methods is available in the TimeZoneInfo class. Czas w innych strefach czasowych, przy użyciu tych metod należy przekonwertować wartość czasu w jednym z stref czasowych na świecie.You convert the time in any one of the world's time zones to the time in any other time zone using these methods.

Obliczenia i porównania DateTime obiekty mają znaczenie tylko wtedy, gdy obiekty reprezentują godziny w tej samej strefie czasowej.Calculations and comparisons of DateTime objects are meaningful only if the objects represent times in the same time zone. Możesz użyć TimeZoneInfo obiektu do reprezentowania DateTime tej wartości czasu podzielić na strefy, mimo że dwa są luźno powiązane.You can use a TimeZoneInfo object to represent a DateTime value's time zone, although the two are loosely coupled. A DateTime obiekt nie ma właściwości, która zwraca obiekt, który reprezentuje tej wartości daty i godziny w strefie czasowej.A DateTime object does not have a property that returns an object that represents that date and time value's time zone. Kind Wskazuje właściwość, jeśli DateTime reprezentuje UTC i czasem lokalnym lub jest nieokreślona.The Kind property indicates if a DateTime represents UTC, local time, or is unspecified. W aplikacji uwzględniających strefy czasowe, konieczne jest zastosowanie mechanizmu zewnętrznego, aby określić strefę czasową, w którym DateTime został utworzony obiekt.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. Można użyć struktury, która otacza zarówno DateTime wartość i TimeZoneInfo obiekt, który reprezentuje DateTime wartości strefy czasowej.You could use a structure that wraps both the DateTime value and the TimeZoneInfo object that represents the DateTime value's time zone. Aby uzyskać szczegółowe informacje na temat przy użyciu czasu UTC w obliczeniach i porównania z wartością DateTime wartości, zobacz wykonywanie operacji arytmetycznych z datami i godzinami.For details on using UTC in calculations and comparisons with DateTime values, see Performing Arithmetic Operations with Dates and Times.

Każdy DateTime elementu członkowskiego niejawnie korzysta z kalendarza gregoriańskiego przeprowadzić jego działania.Each DateTime member implicitly uses the Gregorian calendar to perform its operation. Wyjątki są metodami, które niejawnie określić kalendarz.Exceptions are methods that implicitly specify a calendar. Obejmują one konstruktorów, które określają kalendarza i metody z parametrem pochodną IFormatProvider, takich jak System.Globalization.DateTimeFormatInfo.These include constructors that specify a calendar, and methods with a parameter derived from IFormatProvider, such as System.Globalization.DateTimeFormatInfo.

Działania członków DateTime typu wziąć pod uwagę szczegóły, takie jak przestępnego i liczbę dni w miesiącu.Operations by members of the DateTime type take into account details such as leap years and the number of days in a month.

Wartości daty/godziny i kalendarzeDateTime values and calendars

Biblioteka klas programu .NET Framework zawiera wiele klas kalendarza, które są uzyskiwane z Calendar klasy.The .NET Framework Class Library includes a number of calendar classes, all of which are derived from the Calendar class. Są to:They are:

Każda kultura używa kalendarza domyślnego, zdefiniowane przez jej tylko do odczytu CultureInfo.Calendar właściwości.Each culture uses a default calendar defined by its read-only CultureInfo.Calendar property. Każda kultura może obsługiwać jednego lub wielu kalendarzy, zdefiniowane przez jej tylko do odczytu CultureInfo.OptionalCalendars właściwości.Each culture may support one or more calendars defined by its read-only CultureInfo.OptionalCalendars property. Kalendarz aktualnie używany przez konkretną CultureInfo obiekt jest zdefiniowany przez jego DateTimeFormatInfo.Calendar właściwości.The calendar currently used by a specific CultureInfo object is defined by its DateTimeFormatInfo.Calendar property. Musi być jednym z kalendarzy w CultureInfo.OptionalCalendars tablicy.It must be one of the calendars found in the CultureInfo.OptionalCalendars array.

Bieżący kalendarz kultury jest używany podczas wszystkich operacji formatowania dla tej kultury.A culture's current calendar is used in all formatting operations for that culture. Na przykład kalendarz domyślny kultury tajskiego jest Kalendarz tajski ery buddyjskiego, który jest reprezentowany przez ThaiBuddhistCalendar klasy.For example, the default calendar of the Thai Buddhist culture is the Thai Buddhist Era calendar, which is represented by the ThaiBuddhistCalendar class. Gdy CultureInfo obiekt, który reprezentuje kulturę tajskiego jest używany w formatowania daty i godziny operacji, kalendarza tajski ery buddyjski jest używane domyślnie.When 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. Kalendarz gregoriański jest używana tylko wtedy, gdy kultury DateTimeFormatInfo.Calendar zmienić właściwości, co ilustruje poniższy przykład:The Gregorian calendar is used only if the culture's DateTimeFormatInfo.Calendar property is changed, as the following example shows:

var thTH = new System.Globalization.CultureInfo("th-TH");
var value = new DateTime(2016, 5, 28);

Console.WriteLine(value.ToString(thTH));

thTH.DateTimeFormat.Calendar = new System.Globalization.GregorianCalendar();
Console.WriteLine(value.ToString(thTH));
// Press "Run" to see the output
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

Bieżący kalendarz kultury służy również we wszystkich operacjach analizy dla tej kultury, co ilustruje poniższy przykład.A culture's current calendar is also used in all parsing operations for that culture, as the following example shows.

var thTH = new System.Globalization.CultureInfo("th-TH");
var value = DateTime.Parse("28/05/2559", thTH);
Console.WriteLine(value.ToString(thTH));

thTH.DateTimeFormat.Calendar = new System.Globalization.GregorianCalendar();
Console.WriteLine(value.ToString(thTH));
// Press "Run" to see the output
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

Można utworzyć wystąpienia DateTime wartości, korzystając z daty i godziny elementów (liczba rok, miesiąc i dzień) określonego kalendarza, wywołując Konstruktor daty/godziny zawierającej calendar parametru i przekazanie do niej Calendarobiekt, który reprezentuje kalendarza.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. W poniższym przykładzie użyto elementy daty i godziny z ThaiBuddhistCalendar kalendarza.The following example uses the date and time elements from the ThaiBuddhistCalendar calendar.

var thTH = new System.Globalization.CultureInfo("th-TH");
var dat = new DateTime(2559, 5, 28, thTH.DateTimeFormat.Calendar);
Console.WriteLine($"Thai Buddhist era date: {dat.ToString("d", thTH)}");
Console.WriteLine($"Gregorian date:   {dat:d}");
// Press "Run" to see the output
Dim thTH As New CultureInfo("th-TH")
Dim dat As New DateTime(2559, 5, 28, thTH.DateTimeFormat.Calendar)
Console.WriteLine("Thai Buddhist Era date: {0}", dat.ToString("d", thTH))
Console.WriteLine("Gregorian date:   {0:d}", dat)
' The example displays the following output:
'       Thai Buddhist Era Date:  28/5/2559
'       Gregorian Date:     28/05/2016

DateTime Konstruktory, które nie zawierają calendar parametru przyjęto założenie, że elementy daty i godziny są wyrażone jako liczba jednostek w kalendarzu gregoriańskim.DateTime constructors that do not include a calendar parameter assume that the date and time elements are expressed as units in the Gregorian calendar.

Wszystkie inne DateTime właściwości i metody należy użyć kalendarz gregoriański.All other DateTime properties and methods use the Gregorian calendar. Na przykład DateTime.Year właściwość zwraca rok w kalendarzu gregoriańskim, a DateTime.IsLeapYear(Int32) metoda zakłada, że year parametr jest roku w kalendarzu gregoriańskim.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żdy DateTime elementu członkowskiego, który korzysta z kalendarza gregoriańskiego ma odpowiedni członkiem Calendar klasę, która korzysta z określonego kalendarza.Each DateTime member that uses the Gregorian calendar has a corresponding member of the Calendar class that uses a specific calendar. Na przykład Calendar.GetYear metoda zwraca wartość roku w kalendarzu określonej i Calendar.IsLeapYear interpretuje metoda year parametr jako liczba roku w kalendarzu określonej.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. W poniższym przykładzie użyto obu DateTime i odpowiednich członków ThaiBuddhistCalendar klasy.The following example uses both the DateTime and the corresponding members of the ThaiBuddhistCalendar class.

var thTH = new System.Globalization.CultureInfo("th-TH");
var cal = thTH.DateTimeFormat.Calendar;
var dat = 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))}\n");

Console.WriteLine("Using the Gregorian calendar:");
Console.WriteLine($"Date: {dat:d}");
Console.WriteLine($"Year: {dat.Year}");
Console.WriteLine($"Leap year: {DateTime.IsLeapYear(dat.Year)}");
// Press "Run" to see the output
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: {0}", dat.ToString("d", thTH))
Console.WriteLine("Year: {0}", cal.GetYear(dat))
Console.WriteLine("Leap year: {0}", cal.IsLeapYear(cal.GetYear(dat)))
Console.WriteLine()

Console.WriteLine("Using the Gregorian calendar:")
Console.WriteLine("Date: {0:d}", dat)
Console.WriteLine("Year: {0}", dat.Year)
Console.WriteLine("Leap year: {0}", 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 Struktura zawiera DayOfWeek właściwość, która zwraca dzień tygodnia w kalendarzu gregoriańskim.The DateTime structure includes a DayOfWeek property that returns the day of the week in the Gregorian calendar. Nie ma składowej, która umożliwia pobieranie numer tygodnia roku.It does not include a member that allows you to retrieve the week number of the year. Aby pobrać tydzień roku, należy wywołać kalendarzu programu Calendar.GetWeekOfYear metody.To retrieve the week of the year, call the individual calendar's Calendar.GetWeekOfYear method. Poniższy przykład stanowi ilustrację.The following example provides an illustration.

var thTH = new System.Globalization.CultureInfo("th-TH");
var thCalendar = thTH.DateTimeFormat.Calendar;
var dat = 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, System.Globalization.CalendarWeekRule.FirstDay, DayOfWeek.Sunday)}\n");

var greg = new System.Globalization.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, System.Globalization.CalendarWeekRule.FirstDay,DayOfWeek.Sunday)}");
// Press "Run" to see the output
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: {0}", dat.ToString("d", thTH))
Console.WriteLine("Day of Week: {0}", thCalendar.GetDayOfWeek(dat))
Console.WriteLine("Week of year: {0}",
                thCalendar.GetWeekOfYear(dat, CalendarWeekRule.FirstDay,
                                       DayOfWeek.Sunday))
Console.WriteLine()

Dim greg As Calendar = New GregorianCalendar()
Console.WriteLine("Using the Gregorian calendar:")
Console.WriteLine("Date: {0:d}", dat)
Console.WriteLine("Day of Week: {0}", dat.DayOfWeek)
Console.WriteLine("Week of year: {0}",
                 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

Aby uzyskać więcej informacji na temat daty i kalendarze, zobacz Praca z kalendarzami.For more information on dates and calendars, see Working with Calendars.

Przechowywanie wartości daty/godzinyPersisting DateTime values

Jednak można utrwalić DateTime wartości na cztery sposoby:You can persist DateTime values in four ways:

Należy upewnić się, że procedura, która przywraca DateTime wartości nie spowodować utratę danych lub zgłosić wyjątek, niezależnie od tego, w których technika wybierz.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. DateTime wartości należy Rundy.DateTime values should round-trip. Oznacza to, że wartością oryginalną a przywróconej wartość powinna być taka sama.That is, the original value and the restored value should be the same. Jeśli oryginalna DateTime wartość reprezentuje pojedynczy chwili czasu, należy zidentyfikować, ten sam moment w czasie, po przywróceniu.And if the original DateTime value represents a single instant of time, it should identify the same moment of time when it's restored.

Przechowywanie wartości jako ciągiPersisting values as strings

Można pomyślne przywrócić DateTime wartości, które są zachowywane jako ciągi, należy wykonać następujące czynności:To successfully restore DateTime values that are persisted as strings, follow these rules:

  • Wprowadź ten sam założeń dotyczących formatowania specyficzne dla kultury, po przywróceniu ciągu jako utrwalone po.Make the same assumptions about culture-specific formatting when you restore the string as when you persisted it. Aby upewnić się, że ciąg mogą być przywracane na komputerze, którego bieżącą kulturą jest inny niż kultura systemu, który został zapisany w, należy wywołać ToString przeciążenia, aby zapisać ciąg przy użyciu konwencji niezmiennej kultury.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. Wywołaj Parse(String, IFormatProvider, DateTimeStyles) lub TryParse(String, IFormatProvider, DateTimeStyles, DateTime) przeciążenie, można przywrócić ciągu przy użyciu konwencji niezmiennej kultury.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. Nigdy nie używaj ToString(), Parse(String), lub TryParse(String, DateTime) przeciążeń, które używają Konwencji bieżącej kultury wątku.Never use the ToString(), Parse(String), or TryParse(String, DateTime) overloads, which use the conventions of the current thread culture.

  • Jeśli data reprezentuje jeden moment w czasie, upewnij się, że stanowi ten sam moment w czasie, po przywróceniu, nawet w innej strefie czasowej.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. Konwertuj DateTime wartości do uniwersalny czas koordynowany (UTC) przed zapisaniem zmian.Convert the DateTime value to Coordinated Universal Time (UTC) before saving it. Można również wykonać serializację wartości oraz informacje o strefie czasowej.You can also serialize the value along with time zone information. Aby uzyskać więcej informacji na temat tego podejścia, zobacz danych serializacji daty/godziny i strefy czasowej.For more information about this approach, see Serializing DateTime and time zone data.

Najbardziej typowych błędów, wykonywane, gdy utrwalanie DateTime jest zależą od konwencje formatowania bieżącej kultury lub domyślne wartości jako ciągi.The most common error made when persisting DateTime values as strings is to rely on the formatting conventions of the default or current culture. Problemy, gdy bieżącą kulturą jest inny, gdy zapisywanie i przywracanie ciągi.Problems arise if the current culture is different when saving and restoring the strings. Poniższy przykład ilustruje te problemy.The following example illustrates these problems. Zapisuje pięć daty przy użyciu konwencji formatowania bieżącej kultury, w tym przypadku jest angielski (Stany Zjednoczone).It saves five dates using the formatting conventions of the current culture, which in this case is English (United States). Przywraca go daty przy użyciu konwencji formatowania kultury różne, w tym przypadku jest angielski (Wielka Brytania).It restores the dates using the formatting conventions of a different culture, which in this case is English (Great Britain). Ponieważ Konwencji formatowania kultury dwa są różne, dwóch dat nie można przywrócić, a pozostałe trzy daty są interpretowane niepoprawnie.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. Ponadto jeśli oryginalne wartości daty i godziny reprezentuje pojedynczy momentów w czasie przywróconej razy są nieprawidłowe, ponieważ informacje o strefie czasowej zostaną utracone.Also, if the original date and time values represent single moments in time, the restored times are incorrect because time zone information is lost.

public static void PersistAsLocalStrings()
{
    SaveLocalDatesAsString();
    RestoreLocalDatesFromString();
}

private static void SaveLocalDatesAsString()
{
    DateTime[] dates = { new DateTime(2014, 6, 14, 6, 32, 0),
                   new DateTime(2014, 7, 10, 23, 49, 0),
                   new DateTime(2015, 1, 10, 1, 16, 0),
                   new DateTime(2014, 12, 20, 21, 45, 0),
                   new DateTime(2014, 6, 2, 15, 14, 0) };
    string output = null;

    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}");
    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:");
    for (int ctr = 0; ctr < dates.Length; ctr++)
    {
        Console.WriteLine(dates[ctr].ToString("f"));
        output += dates[ctr].ToString() + (ctr != dates.Length - 1 ? "|" : "");
    }
    StreamWriter sw = new StreamWriter(filenameTxt);
    sw.Write(output);
    sw.Close();
    Console.WriteLine("Saved dates...");
}

private static void RestoreLocalDatesFromString()
{
    TimeZoneInfo.ClearCachedData();
    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}");
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");
    StreamReader sr = new StreamReader(filenameTxt);
    string[] inputValues = sr.ReadToEnd().Split(new char[] { '|' },
                                                StringSplitOptions.RemoveEmptyEntries);
    sr.Close();
    Console.WriteLine("The dates on an {0} system:",
                      Thread.CurrentThread.CurrentCulture.Name);
    foreach (var inputValue in inputValues)
    {
        DateTime dateValue;
        if (DateTime.TryParse(inputValue, out dateValue))
        {
            Console.WriteLine($"'{inputValue}' --> {dateValue:f}");
        }
        else
        {
            Console.WriteLine("Cannot parse '{inputValue}'");
        }
    }
    Console.WriteLine("Restored dates...");
}
// 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...
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...

Aby obustronnie konwertować DateTime wartości pomyślnie, wykonaj następujące kroki:To round-trip DateTime values successfully, follow these steps:

  1. Jeśli wartość reprezentuje pojedynczy minut czasu, przekonwertować je od lokalnego czasu na czas UTC, wywołując ToUniversalTime metody.If the values represent single moments of time, convert them from the local time to UTC by calling the ToUniversalTime method.
  2. Przekonwertować ich ciągów reprezentujących daty, wywołując ToString(String, IFormatProvider) lub String.Format(IFormatProvider, String, Object[]) przeciążenia.Convert the dates to their string representations by calling the ToString(String, IFormatProvider) or String.Format(IFormatProvider, String, Object[]) overload. Użyć konwencji formatowania kultury niezmiennej, określając CultureInfo.InvariantCulture jako provider argumentu.Use the formatting conventions of the invariant culture by specifying CultureInfo.InvariantCulture as the provider argument. Określ wartość należy obustronne przy użyciu ciągu formatu standardowego "O" lub "R".Specify that the value should round-trip by using the "O" or "R" standard format string.

Aby przywrócić utrwalonych DateTime wartości bez utraty danych, wykonaj następujące kroki:To restore the persisted DateTime values without data loss, follow these steps:

  1. Przeanalizować dane, wywołując ParseExact lub TryParseExact przeciążenia.Parse the data by calling the ParseExact or TryParseExact overload. Określ CultureInfo.InvariantCulture jako provider argumentu, a następnie użyj tego samego formatu standardowego ciągu użyte do format argument podczas konwersji.Specify CultureInfo.InvariantCulture as the provider argument, and use the same standard format string you used for the format argument during conversion. Obejmują DateTimeStyles.RoundtripKind wartość w styles argumentu.Include the DateTimeStyles.RoundtripKind value in the styles argument.
  2. Jeśli DateTime wartości reprezentują pojedynczego momenty w czasie, wywołanie ToLocalTime metodę, aby przekonwertować przeanalizowana Data względem czasu UTC na czas lokalny.If the DateTime values represent single moments in time, call the ToLocalTime method to convert the parsed date from UTC to local time.

W poniższym przykładzie użyto Niezmienna kultura i ciąg formatu standardowego "O", aby upewnić się, że DateTime wartości zapisywany i przywracany reprezentują ten sam moment w czasie, niezależnie od systemu, kultury i strefy czasowej z systemów źródłowych i docelowych.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.

public static void PersistAsInvariantStrings()
{
    SaveDatesAsInvariantStrings();
    RestoreDatesAsInvariantStrings();
}

private static void SaveDatesAsInvariantStrings()
{
    DateTime[] dates = { new DateTime(2014, 6, 14, 6, 32, 0),
                   new DateTime(2014, 7, 10, 23, 49, 0),
                   new DateTime(2015, 1, 10, 1, 16, 0),
                   new DateTime(2014, 12, 20, 21, 45, 0),
                   new DateTime(2014, 6, 2, 15, 14, 0) };
    string output = null;

    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}");
    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:");
    for (int ctr = 0; ctr < dates.Length; ctr++)
    {
        Console.WriteLine(dates[ctr].ToString("f"));
        output += dates[ctr].ToUniversalTime().ToString("O", CultureInfo.InvariantCulture)
                  + (ctr != dates.Length - 1 ? "|" : "");
    }
    StreamWriter sw = new StreamWriter(filenameTxt);
    sw.Write(output);
    sw.Close();
    Console.WriteLine("Saved dates...");
}

private static void RestoreDatesAsInvariantStrings()
{
    TimeZoneInfo.ClearCachedData();
    Console.WriteLine("Current Time Zone: {0}",
                      TimeZoneInfo.Local.DisplayName);
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");
    StreamReader sr = new StreamReader(filenameTxt);
    string[] inputValues = sr.ReadToEnd().Split(new char[] { '|' },
                                                StringSplitOptions.RemoveEmptyEntries);
    sr.Close();
    Console.WriteLine("The dates on an {0} system:",
                      Thread.CurrentThread.CurrentCulture.Name);
    foreach (var inputValue in inputValues)
    {
        DateTime dateValue;
        if (DateTime.TryParseExact(inputValue, "O", CultureInfo.InvariantCulture,
                              DateTimeStyles.RoundtripKind, out dateValue))
        {
            Console.WriteLine($"'{inputValue}' --> {dateValue.ToLocalTime():f}");
        }
        else
        {
            Console.WriteLine("Cannot parse '{0}'", inputValue);
        }
    }
    Console.WriteLine("Restored dates...");
}
// 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...
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...

Przechowywanie wartości jako liczby całkowitePersisting values as integers

Jednak można utrwalić daty i godziny jako Int64 wartość, która reprezentuje liczbę znaczników.You can persist a date and time as an Int64 value that represents a number of ticks. W takim przypadku nie trzeba wziąć pod uwagę kultury systemów DateTime wartości są zachowywane i przywrócone na.In this case, you don't have to consider the culture of the systems the DateTime values are persisted and restored on.

Aby zachować DateTime wartości jako liczby całkowitej:To persist a DateTime value as an integer:

  • Jeśli DateTime wartości reprezentują pojedynczego momenty w czasie, przekonwertować je na czas UTC, wywołując ToUniversalTime metody.If the DateTime values represent single moments in time, convert them to UTC by calling the ToUniversalTime method.
  • Pobieranie liczby taktów reprezentowany przez DateTime wartość z jego Ticks właściwości.Retrieve the number of ticks represented by the DateTime value from its Ticks property.

Aby przywrócić DateTime wartości, które zostały utrwalone w postaci liczby całkowitej:To restore a DateTime value that has been persisted as an integer:

  1. Utwórz wystąpienie nowego DateTime obiektu przez przekazanie Int64 wartość DateTime(Int64) konstruktora.Instantiate a new DateTime object by passing the Int64 value to the DateTime(Int64) constructor.
  2. Jeśli DateTime wartość reprezentuje jeden moment w czasie, przekonwertuj go z czasu UTC na czas lokalny, wywołując ToLocalTime metody.If the DateTime value represents a single moment in time, convert it from UTC to the local time by calling the ToLocalTime method.

Poniższy przykład będzie się powtarzał tablicę DateTime wartości jako liczby całkowite w systemie, w Stanach Zjednoczonych Strefa czasowa czasu pacyficznego.The following example persists an array of DateTime values as integers on a system in the U.S. Pacific Time zone. Jej przywracania go w systemie w strefie UTC.It restores it on a system in the UTC zone. Zawiera plik, który zawiera liczby całkowite Int32 wartość, która wskazuje łączną liczbę Int64 wartości, które natychmiast po nim.The file that contains the integers includes an Int32 value that indicates the total number of Int64 values that immediately follow it.

public static void PersistAsIntegers()
{
    SaveDatesAsInts();
    RestoreDatesAsInts();
}

private static void SaveDatesAsInts()
{
    DateTime[] dates = { new DateTime(2014, 6, 14, 6, 32, 0),
                   new DateTime(2014, 7, 10, 23, 49, 0),
                   new DateTime(2015, 1, 10, 1, 16, 0),
                   new DateTime(2014, 12, 20, 21, 45, 0),
                   new DateTime(2014, 6, 2, 15, 14, 0) };

    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}");
    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:");
    long[] ticks = new long[dates.Length];
    for (int ctr = 0; ctr < dates.Length; ctr++)
    {
        Console.WriteLine(dates[ctr].ToString("f"));
        ticks[ctr] = dates[ctr].ToUniversalTime().Ticks;
    }
    FileStream fs = new FileStream(filenameInts, FileMode.Create);
    BinaryWriter bw = new BinaryWriter(fs);
    bw.Write(ticks.Length);
    foreach (var tick in ticks)
        bw.Write(tick);

    bw.Close();
    Console.WriteLine("Saved dates...");
}

private static void RestoreDatesAsInts()
{
    TimeZoneInfo.ClearCachedData();
    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}");
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");
    FileStream fs = new FileStream(filenameInts, FileMode.Open);
    BinaryReader br = new BinaryReader(fs);
    int items;
    DateTime[] dates;

    try
    {
        items = br.ReadInt32();
        dates = new DateTime[items];

        for (int ctr = 0; ctr < items; ctr++)
        {
            long ticks = br.ReadInt64();
            dates[ctr] = new DateTime(ticks).ToLocalTime();
        }
    }
    catch (EndOfStreamException)
    {
        Console.WriteLine("File corruption detected. Unable to restore data...");
        return;
    }
    catch (IOException)
    {
        Console.WriteLine("Unspecified I/O error. Unable to restore data...");
        return;
    }
    // Thrown during array initialization.
    catch (OutOfMemoryException)
    {
        Console.WriteLine("File corruption detected. Unable to restore data...");
        return;
    }
    finally
    {
        br.Close();
    }

    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:");
    foreach (var value in dates)
        Console.WriteLine(value.ToString("f"));

    Console.WriteLine("Restored dates...");
}
// 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...
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...

Serializacja wartości daty/godzinySerializing DateTime values

Jednak można utrwalić DateTime wartości za pomocą serializacji do strumienia lub pliku, a następnie przywróć je do deserializacji.You can persist DateTime values through serialization to a stream or file, and then restore them through deserialization. DateTime Data jest serializowany w formacie niektóre określony obiekt.DateTime data is serialized in some specified object format. Obiekty te zostaną przywrócone, gdy są one deserializacji.The objects are restored when they are deserialized. Element formatujący lub serializator, takich jak XmlSerializer lub BinaryFormatter, obsługuje proces serializacji i deserializacji.A formatter or serializer, such as XmlSerializer or BinaryFormatter, handles the process of serialization and deserialization. Aby uzyskać więcej informacji o serializacji i typy serializacji obsługiwane przez program .NET Framework, zobacz serializacji.For more information about serialization and the types of serialization supported by the .NET Framework, see Serialization.

W poniższym przykładzie użyto XmlSerializer klasy do serializacji i deserializacji DateTime wartości.The following example uses the XmlSerializer class to serialize and deserialize DateTime values. Wartości reprezentują wszystkie dni w roku przestępnym w wieku dwudziestego pierwszego.The values represent all leap year days in the twenty-first century. Dane wyjściowe przedstawia wynik, jeśli ten przykład zostanie uruchomiony w systemie, którego bieżącą kulturą jest angielski (Wielka Brytania).The output represents the result if the example is run on a system whose current culture is English (Great Britain). Ponieważ została przeprowadzona DateTime sam obiekt, kod nie musi obsługiwać różnic kulturowych w formaty daty i godziny.Because you've deserialized the DateTime object itself, the code doesn't have to handle cultural differences in date and time formats.

public static void PersistAsXML()
{
    // Serialize the data.
    List<DateTime> leapYears = new List<DateTime>();
    for (int year = 2000; year <= 2100; year += 4)
    {
        if (DateTime.IsLeapYear(year))
            leapYears.Add(new DateTime(year, 2, 29));
    }
    DateTime[] dateArray = leapYears.ToArray();

    XmlSerializer serializer = new XmlSerializer(dateArray.GetType());
    TextWriter sw = new StreamWriter(filenameXml);

    try
    {
        serializer.Serialize(sw, dateArray);
    }
    catch (InvalidOperationException e)
    {
        Console.WriteLine(e.InnerException.Message);
    }
    finally
    {
        if (sw != null) sw.Close();
    }

    // Deserialize the data.
    DateTime[] deserializedDates;
    using (FileStream fs = new FileStream(filenameXml, FileMode.Open))
    {
        deserializedDates = (DateTime[])serializer.Deserialize(fs);
    }

    // Display the dates.
    Console.WriteLine($"Leap year days from 2000-2100 on an {Thread.CurrentThread.CurrentCulture.Name} system:");
    int nItems = 0;
    foreach (var dat in deserializedDates)
    {
        Console.Write($"   {dat:d}     ");
        nItems++;
        if (nItems % 5 == 0)
            Console.WriteLine();
    }
}
// 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
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

Poprzedni przykład nie zawiera informacje o czasie.The previous example doesn't include time information. Jeśli DateTime wartość reprezentuje moment w czasie i jest wyrażona jako czas lokalny, przekonwertuj go od czasu lokalnego na UTC, przed serializacji go przez wywołanie metody ToUniversalTime metody.If 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 deserializacji go przekonwertować go z czasu UTC na czas lokalny, wywołując ToLocalTime metody.After you deserialize it, convert it from UTC to local time by calling the ToLocalTime method. W poniższym przykładzie użyto BinaryFormatter klasy do serializacji DateTime danych w systemie, w Stanach Zjednoczonych Pacyficznego standardowa strefy czasowej i zdeserializuj ją w systemie w Stanach Zjednoczonych Centralna strefy standardowej.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.

public static void PersistBinary()
{
    SaveDatesBinary();
    RestoreDatesBinary();
}

private static void SaveDatesBinary()
{
    DateTime[] dates = { new DateTime(2014, 6, 14, 6, 32, 0),
                   new DateTime(2014, 7, 10, 23, 49, 0),
                   new DateTime(2015, 1, 10, 1, 16, 0),
                   new DateTime(2014, 12, 20, 21, 45, 0),
                   new DateTime(2014, 6, 2, 15, 14, 0) };
    FileStream fs = new FileStream(filenameBin, FileMode.Create);
    BinaryFormatter bin = new BinaryFormatter();

    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}");
    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:");
    for (int ctr = 0; ctr < dates.Length; ctr++)
    {
        Console.WriteLine(dates[ctr].ToString("f"));
        dates[ctr] = dates[ctr].ToUniversalTime();
    }
    bin.Serialize(fs, dates);
    fs.Close();
    Console.WriteLine("Saved dates...");
}

private static void RestoreDatesBinary()
{
    TimeZoneInfo.ClearCachedData();
    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}");
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");

    FileStream fs = new FileStream(filenameBin, FileMode.Open);
    BinaryFormatter bin = new BinaryFormatter();
    DateTime[] dates = (DateTime[])bin.Deserialize(fs);
    fs.Close();

    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:");
    foreach (var value in dates)
        Console.WriteLine(value.ToLocalTime().ToString("f"));

    Console.WriteLine("Restored dates...");
}
// 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 23:45
//       02 June 2014 17:14
//       Restored dates...
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...

Serializacja danych daty/godziny i strefy czasowejSerializing DateTime and time zone data

Wszystkich poprzednich przykładach założono, że że DateTime wartości są wyrażane jako czas lokalny.The previous examples all assumed that DateTime values are expressed as local times. Kod przekonwertować wartości między czasem UTC i czasem lokalnym, więc odzwierciedlają one ten sam moment w czasie w systemach źródłowych i docelowych.The code converted the values between UTC and local time so they reflect the same moment in time on the source and target systems. DateTime wartości mogą uwzględniać również momenty w czasie w strefie czasowej niż lokalne i czasem UTC.DateTime values may also reflect moments in time in a time zone other than local and UTC. Ponieważ DateTime struktura nie jest uwzględniających strefy czasowe, należy go serializować zarówno DateTime wartość i TimeZoneInfo obiekt, który reprezentuje jej strefy czasowej.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. Tworzenie typu, których pola zawiera zarówno DateTime wartość i strefy czasowej.Create a type whose fields include both the DateTime value and its time zone. W poniższym przykładzie zdefiniowano DateWithTimeZone struktury.The following example defines a DateWithTimeZone structure.

using System;

namespace DateTimeExtensions
{
    [Serializable]
    public struct DateWithTimeZone
    {
        private TimeZoneInfo tz;
        private DateTime dt;

        public DateWithTimeZone(DateTime dateValue, TimeZoneInfo timeZone)
        {
            dt = dateValue;
            if (timeZone == null)
                tz = TimeZoneInfo.Local;
            else
                tz = timeZone;
        }

        public TimeZoneInfo TimeZone
        {
            get { return (tz); }
            set { tz = value; }
        }

        public DateTime DateTime
        {
            get { return (dt); }
            set { dt = value; }
        }
    }
}
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
            If timeZone Is Nothing Then
                tz = TimeZoneInfo.Local
            Else
                tz = timeZone
            End If
        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

Ważne

DateWithTimeZone Struktura jest używana w dwóch następnych przykładach, w których serializacji i deserializacji, tablica DateWithTimeZone obiektów.The DateWithTimeZone structure is used in the next two examples, which serialize and deserialize an array of DateWithTimeZone objects. Źródło dla całego zestawu przykłady z tego artykułu można wyświetlić w jednym języka Visual Basic lub C# z repozytorium dokumentów w witrynie GitHub.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.

Za pomocą DateWithTimeZone struktury, można następnie zachować daty i godziny oraz informacje o strefie czasowej.By using the DateWithTimeZone structure, you can then persist date and time along with time zone information. W poniższym przykładzie użyto BinaryFormatter klasy do serializacji tablicę DateWithTimeZone obiektów.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")) };
    FileStream fs = new FileStream(@".\Schedule.bin", FileMode.Create);
    BinaryFormatter 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

Poniższy przykład następnie wywołuje BinaryFormatter.Deserialize metodę deserializacji go.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;
    }

    BinaryFormatter 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

Vs daty/godziny. Przedział czasuDateTime vs. TimeSpan

DateTime i TimeSpan typy wartości różnią się w tym DateTime reprezentuje moment w czasie, natomiast TimeSpan reprezentuje przedział czasu.The DateTime and TimeSpan value types differ in that a DateTime represents an instant in time whereas a TimeSpan represents a time interval. Należy odjąć jedno wystąpienie DateTime z innego uzyskać TimeSpan obiekt, który reprezentuje odstęp czasu między nimi.You can subtract one instance of DateTime from another to obtain a TimeSpan object that represents the time interval between them. Możesz też dodać dodatnią TimeSpan do bieżącego DateTime uzyskać DateTime wartość, która reprezentuje datę wypadającą w przyszłości.Or you could add a positive TimeSpan to the current DateTime to obtain a DateTime value that represents a future date.

Możesz dodawać lub odejmować przedział czasu z DateTime obiektu.You can add or subtract a time interval from a DateTime object. Przedziały czasu może być dodatnia lub ujemna, i może być wyrażona w jednostkach, takich jak znaczniki, sekund, lub jako TimeSpan obiektu.Time intervals can be negative or positive, and they can be expressed in units such as ticks, seconds, or as a TimeSpan object.

Porównanie dla równości w granicach tolerancjiComparing for equality within tolerance

Porównania równości dla DateTime wartości są dokładne.Equality comparisons for DateTime values are exact. Oznacza to, że dwie wartości muszą być wyrażone jako taką samą liczbę taktów, aby były uważane za równe.That means two values must be expressed as the same number of ticks to be considered equal. Dokładność jest często niepotrzebne lub nawet nieprawidłowe dla wielu aplikacji.That precision is often unecessary or even incorrect for many applications. Często chcesz sprawdzić, czy DateTime obiekty są przybliżeniu równa.Often, you want to test if DateTime objects are roughly equal.

W poniższym przykładzie pokazano sposób porównywania w przybliżeniu równoważne DateTime .The following example demonstrates how to compare roughly equivalent DateTime . Podczas deklarowania je w taki sam, akceptuje małych margines różnica.It accepts a small margin of difference when declaring them equal.

public static bool RoughlyEquals(DateTime time, DateTime timeWithWindow, int windowInSeconds, int frequencyInSeconds)
{
    long delta = (long)((TimeSpan)(timeWithWindow - time)).TotalSeconds % frequencyInSeconds;
    delta = delta > windowInSeconds ? frequencyInSeconds - delta : delta;
    return Math.Abs(delta) < windowInSeconds;
}

public static void TestRoughlyEquals()
{
    int window = 10;
    int freq = 60 * 60 * 2; // 2 hours;

    DateTime d1 = DateTime.Now;

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

    DateTime d6 = (d1.AddHours(2)).AddSeconds(2 * window);
    DateTime d7 = (d1.AddHours(2)).AddSeconds(-2 * window);
    DateTime d8 = (d1.AddHours(2)).AddSeconds(window / 2);
    DateTime d9 = (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)}");
}
// 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
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

Uwagi dotyczące współdziałania COMCOM interop considerations

A DateTime wartość, która jest przekazywana do aplikacji modelu COM, a następnie jest przenoszona z powrotem do aplikacji zarządzanej, jest nazywany przesyłania danych.A DateTime value that is transferred to a COM application, then is transferred back to a managed application, is said to round-trip. Jednak DateTime nie ma wartość, która określa tylko przez czas błądzenia, zgodnie z oczekiwaniami.However, a DateTime value that specifies only a time does not round-trip as you might expect.

Jeśli możesz Rundy tylko przez czas, np. w dniu 3, końcowej daty i godziny jest 30 grudnia 1899 r.If you round-trip only a time, such as 3 P.M., the final date and time is December 30, 1899 C.E. o 3:00, zamiast, 1 stycznia 0001 rat 3:00 P.M., instead of January, 1, 0001 C.E. at 3:00 P.M.at 3:00 P.M. .NET Framework i COM założono domyślną datę, gdy określono tylko raz.The .NET Framework and COM assume a default date when only a time is specified. Jednak COM system założy podstawowy data 30 grudnia 1899 r, gdy podstawowy dzień, 1 stycznia 0001 r przyjęto założenie, .NET FrameworkHowever, 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.

Tylko godzina jest przekazywany z programu .NET Framework modelowi COM, jest przetwarzana w specjalny jest przeprowadzane, Konwertuje czas na format używany przez model 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. Kiedy tylko godzina jest przekazywany z modelu COM do programu .NET Framework, brak specjalnego przetwarzania jest wykonywane, ponieważ, może dojść do uszkodzenia uzasadnione daty i godziny w lub przed 30 grudnia 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. Jeśli wartość typu date rozpoczyna się jego przesyłania danych z modelu COM, .NET Framework i COM należy zachować daty.If a date starts its round-trip from COM, the .NET Framework and COM preserve the date.

Zachowanie środowiska .NET Framework i COM oznacza, że jeśli rund Twojej aplikacji DateTime określa tylko raz, aplikacja musi Pamiętaj, aby zmodyfikować lub zignorować błędne datę z końcowym DateTime obiektu.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(Int64) DateTime(Int64) DateTime(Int64) DateTime(Int64)

Inicjuje nowe wystąpienie klasy DateTime struktury do określonej liczby taktów. Initializes a new instance of the DateTime structure to a specified number of ticks.

DateTime(Int64, DateTimeKind) DateTime(Int64, DateTimeKind) DateTime(Int64, DateTimeKind) DateTime(Int64, DateTimeKind)

Inicjuje nowe wystąpienie klasy DateTime struktury określoną liczbę taktów i uniwersalny czas koordynowany (UTC) lub czasu lokalnego. Initializes a new instance of the DateTime structure to a specified number of ticks and to Coordinated Universal Time (UTC) or local time.

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

Inicjuje nowe wystąpienie klasy DateTime struktury określony rok, miesiąc i dzień. Initializes a new instance of the DateTime structure to the specified year, month, and day.

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

Inicjuje nowe wystąpienie klasy DateTime określony rok, miesiąc i dzień w kalendarzu określonej struktury. 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) DateTime(Int32, Int32, Int32, Int32, Int32, Int32) DateTime(Int32, Int32, Int32, Int32, Int32, Int32) DateTime(Int32, Int32, Int32, Int32, Int32, Int32)

Inicjuje nowe wystąpienie klasy DateTime struktury określony rok, miesiąc, godziny, minuty i sekundy. 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, DateTimeKind) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind)

Inicjuje nowe wystąpienie klasy DateTime strukturę do określonego roku, miesiąc, dzień, godzinę, minuty, sekundy i uniwersalny czas koordynowany (UTC) lub czasu lokalnego. 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, Calendar) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Calendar) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Calendar) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Calendar)

Inicjuje nowe wystąpienie klasy DateTime strukturę do określonego roku, miesiąca, godziny, minuty i sekundy określonego kalendarza. 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, Int32) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32)

Inicjuje nowe wystąpienie klasy DateTime strukturę do określonego roku, miesiąca, dnia, godziny, minuty, sekundy i milisekundy. 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, DateTimeKind) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind)

Inicjuje nowe wystąpienie klasy DateTime struktury do określonego roku, miesiąca, dnia, godziny, minuty, sekundy, milisekund i uniwersalny czas koordynowany (UTC) lub czasu lokalnego. 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(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar)

Inicjuje nowe wystąpienie klasy DateTime strukturę do określonego roku, miesiąca, dzień, godzinę, minutę, sekundy i milisekundy określonego kalendarza. 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) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar, DateTimeKind) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar, DateTimeKind) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar, DateTimeKind)

Inicjuje nowe wystąpienie klasy DateTime strukturę do określonego roku, miesiąc, dzień, godzinę, minuty, sekundy, milisekund i uniwersalny czas koordynowany (UTC) lub czasu lokalnego do określonego kalendarza. 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.

Pola

MaxValue MaxValue MaxValue MaxValue

Reprezentuje największa możliwa wartość z DateTime. Represents the largest possible value of DateTime. To pole jest tylko do odczytu. This field is read-only.

MinValue MinValue MinValue MinValue

Reprezentuje najniższą możliwą wartość elementu DateTime. Represents the smallest possible value of DateTime. To pole jest tylko do odczytu. This field is read-only.

UnixEpoch UnixEpoch UnixEpoch UnixEpoch

Właściwości

Date Date Date Date

Pobiera składnik daty z tego wystąpienia. Gets the date component of this instance.

Day Day Day Day

Pobiera dzień miesiąca, reprezentowane przez to wystąpienie. Gets the day of the month represented by this instance.

DayOfWeek DayOfWeek DayOfWeek DayOfWeek

Pobiera dzień tygodnia, reprezentowany przez to wystąpienie. Gets the day of the week represented by this instance.

DayOfYear DayOfYear DayOfYear DayOfYear

Pobiera dzień roku, reprezentowane przez to wystąpienie. Gets the day of the year represented by this instance.

Hour Hour Hour Hour

Pobiera składnik godziny wartości daty, reprezentowane przez to wystąpienie. Gets the hour component of the date represented by this instance.

Kind Kind Kind Kind

Pobiera wartość wskazującą, czy czas reprezentowany przez to wystąpienie jest oparta na czas lokalny, uniwersalny czas koordynowany (UTC) lub nie. Gets a value that indicates whether the time represented by this instance is based on local time, Coordinated Universal Time (UTC), or neither.

Millisecond Millisecond Millisecond Millisecond

Pobiera składnik milisekund daty reprezentowane przez to wystąpienie. Gets the milliseconds component of the date represented by this instance.

Minute Minute Minute Minute

Pobiera składnik minuty z Data jest reprezentowana przez to wystąpienie. Gets the minute component of the date represented by this instance.

Month Month Month Month

Pobiera składnik miesiąca z Data jest reprezentowana przez to wystąpienie. Gets the month component of the date represented by this instance.

Now Now Now Now

Pobiera DateTime obiekt, który jest ustawiona na bieżącą datę i godzinę na tym komputerze, który jest wyrażona jako czas lokalny. Gets a DateTime object that is set to the current date and time on this computer, expressed as the local time.

Second Second Second Second

Pobiera składnik sekund daty reprezentowane przez to wystąpienie. Gets the seconds component of the date represented by this instance.

Ticks Ticks Ticks Ticks

Pobiera liczbę znaczników, które reprezentują datę i godzinę tego wystąpienia. Gets the number of ticks that represent the date and time of this instance.

TimeOfDay TimeOfDay TimeOfDay TimeOfDay

Pobiera godzinę dla tego wystąpienia. Gets the time of day for this instance.

Today Today Today Today

Pobiera bieżącą datę. Gets the current date.

UtcNow UtcNow UtcNow UtcNow

Pobiera DateTime obiekt, który jest ustawiona na bieżącą datę i godzinę na tym komputerze, wyrażone jako uniwersalny czas koordynowany (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 Year Year Year

Pobiera składnik roku od daty reprezentowane przez to wystąpienie. Gets the year component of the date represented by this instance.

Metody

Add(TimeSpan) Add(TimeSpan) Add(TimeSpan) Add(TimeSpan)

Zwraca nowy DateTime , dodaje wartość określonego TimeSpan wartość tego wystąpienia. Returns a new DateTime that adds the value of the specified TimeSpan to the value of this instance.

AddDays(Double) AddDays(Double) AddDays(Double) AddDays(Double)

Zwraca nowy DateTime określoną liczbę dni, dodaje wartość tego wystąpienia. Returns a new DateTime that adds the specified number of days to the value of this instance.

AddHours(Double) AddHours(Double) AddHours(Double) AddHours(Double)

Zwraca nowy DateTime określoną liczbę godzin, która zwiększa wartość tego wystąpienia. Returns a new DateTime that adds the specified number of hours to the value of this instance.

AddMilliseconds(Double) AddMilliseconds(Double) AddMilliseconds(Double) AddMilliseconds(Double)

Zwraca nowy DateTime , dodaje określoną liczbę milisekund do wartość tego wystąpienia. Returns a new DateTime that adds the specified number of milliseconds to the value of this instance.

AddMinutes(Double) AddMinutes(Double) AddMinutes(Double) AddMinutes(Double)

Zwraca nowy DateTime określoną liczbę minut, dodaje wartość tego wystąpienia. Returns a new DateTime that adds the specified number of minutes to the value of this instance.

AddMonths(Int32) AddMonths(Int32) AddMonths(Int32) AddMonths(Int32)

Zwraca nowy DateTime , dodaje określoną liczbę miesięcy do wartości tego wystąpienia. Returns a new DateTime that adds the specified number of months to the value of this instance.

AddSeconds(Double) AddSeconds(Double) AddSeconds(Double) AddSeconds(Double)

Zwraca nowy DateTime określoną liczbę sekund, dodaje wartość tego wystąpienia. Returns a new DateTime that adds the specified number of seconds to the value of this instance.

AddTicks(Int64) AddTicks(Int64) AddTicks(Int64) AddTicks(Int64)

Zwraca nowy DateTime , dodaje określoną liczbę taktów do wartość tego wystąpienia. Returns a new DateTime that adds the specified number of ticks to the value of this instance.

AddYears(Int32) AddYears(Int32) AddYears(Int32) AddYears(Int32)

Zwraca nowy DateTime , dodaje określoną liczbę lat do wartości tego wystąpienia. Returns a new DateTime that adds the specified number of years to the value of this instance.

Compare(DateTime, DateTime) Compare(DateTime, DateTime) Compare(DateTime, DateTime) Compare(DateTime, DateTime)

Porównuje dwa wystąpienia DateTime i zwraca liczbę całkowitą, która wskazuje, czy pierwsze wystąpienie jest wcześniejsza niż takie same jak lub nowszej niż drugie wystąpienie. 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) CompareTo(DateTime) CompareTo(DateTime) CompareTo(DateTime)

Porównuje wartość tego wystąpienia określony DateTime wartości i zwraca liczbę całkowitą, która wskazuje, czy to wystąpienie jest wcześniejsza niż takie same, jak lub nowszej niż określona DateTime wartość. 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) CompareTo(Object) CompareTo(Object) CompareTo(Object)

Porównuje wartość tego wystąpienia określony obiekt, który zawiera określoną DateTime wartości i zwraca liczbę całkowitą, która wskazuje, czy to wystąpienie jest wcześniejsza niż takie same, jak lub nowszej niż określona DateTime wartość. 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) DaysInMonth(Int32, Int32) DaysInMonth(Int32, Int32) DaysInMonth(Int32, Int32)

Zwraca liczbę dni w określonym miesiącu i roku. Returns the number of days in the specified month and year.

Equals(DateTime, DateTime) Equals(DateTime, DateTime) Equals(DateTime, DateTime) Equals(DateTime, DateTime)

Zwraca wartość wskazującą, czy dwa DateTime wystąpienia mają taką samą wartość daty i godziny. Returns a value indicating whether two DateTime instances have the same date and time value.

Equals(DateTime) Equals(DateTime) Equals(DateTime) Equals(DateTime)

Zwraca wartość wskazującą, czy wartość tego wystąpienia jest równa wartości określonej DateTime wystąpienia. Returns a value indicating whether the value of this instance is equal to the value of the specified DateTime instance.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Zwraca wartość wskazującą, czy to wystąpienie jest równe podanemu obiektowi. Returns a value indicating whether this instance is equal to a specified object.

FromBinary(Int64) FromBinary(Int64) FromBinary(Int64) FromBinary(Int64)

Deserializuje wartość binarną 64-bitowych i zostaje odtworzony oryginalny serializacji DateTime obiektu. Deserializes a 64-bit binary value and recreates an original serialized DateTime object.

FromFileTime(Int64) FromFileTime(Int64) FromFileTime(Int64) FromFileTime(Int64)

Konwertuje określony czas pliku Windows odpowiedni czas lokalny. Converts the specified Windows file time to an equivalent local time.

FromFileTimeUtc(Int64) FromFileTimeUtc(Int64) FromFileTimeUtc(Int64) FromFileTimeUtc(Int64)

Konwertuje określony czas pliku Windows odpowiedni czas UTC. Converts the specified Windows file time to an equivalent UTC time.

FromOADate(Double) FromOADate(Double) FromOADate(Double) FromOADate(Double)

Zwraca DateTime odpowiednikiem określonej OLE automatyzacji daty. Returns a DateTime equivalent to the specified OLE Automation Date.

GetDateTimeFormats() GetDateTimeFormats() GetDateTimeFormats() GetDateTimeFormats()

Konwertuje wartość tego wystąpienia reprezentacji ciągu obsługiwany przez standardowy format daty i czasu specyfikatorów formatu. Converts the value of this instance to all the string representations supported by the standard date and time format specifiers.

GetDateTimeFormats(Char) GetDateTimeFormats(Char) GetDateTimeFormats(Char) GetDateTimeFormats(Char)

Konwertuje wartość tego wystąpienia reprezentacji ciągu obsługiwany przez określoną datą standardowe i specyfikator formatu godziny. Converts the value of this instance to all the string representations supported by the specified standard date and time format specifier.

GetDateTimeFormats(IFormatProvider) GetDateTimeFormats(IFormatProvider) GetDateTimeFormats(IFormatProvider) GetDateTimeFormats(IFormatProvider)

Konwertuje wartość tego wystąpienia reprezentacji ciągu obsługiwane przez standardowa Data i czas specyfikatorów formatu i określonego specyficzne dla kultury informacje o formatowaniu. 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.

GetDateTimeFormats(Char, IFormatProvider) GetDateTimeFormats(Char, IFormatProvider) GetDateTimeFormats(Char, IFormatProvider) GetDateTimeFormats(Char, IFormatProvider)

Konwertuje wartość tego wystąpienia reprezentacji ciągu obsługiwany przez określoną datą standardowe i specyfikator formatu godziny i informacje o formatowaniu specyficzne dla kultury. 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.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Zwraca kod skrótu dla tego wystąpienia. Returns the hash code for this instance.

GetTypeCode() GetTypeCode() GetTypeCode() GetTypeCode()

Zwraca TypeCode dla typu wartości DateTime. Returns the TypeCode for value type DateTime.

IsDaylightSavingTime() IsDaylightSavingTime() IsDaylightSavingTime() IsDaylightSavingTime()

Wskazuje, czy to wystąpienie DateTime znajduje się w zakresie czasu letniego dla bieżącej strefy czasowej. Indicates whether this instance of DateTime is within the daylight saving time range for the current time zone.

IsLeapYear(Int32) IsLeapYear(Int32) IsLeapYear(Int32) IsLeapYear(Int32)

Zwraca wskazanie, czy określony rok jest rokiem przestępnym. Returns an indication whether the specified year is a leap year.

Parse(String) Parse(String) Parse(String) Parse(String)

Konwertuje ciąg reprezentujący datę i godzinę na jego DateTime równoważne przy użyciu konwencji bieżącej kultury wątku. 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) Parse(String, IFormatProvider) Parse(String, IFormatProvider) Parse(String, IFormatProvider)

Konwertuje ciąg reprezentujący datę i godzinę na jego DateTime równoważne przy użyciu informacji specyficznych dla kultury. Converts the string representation of a date and time to its DateTime equivalent by using culture-specific format information.

Parse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) Parse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) Parse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) Parse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles)
Parse(String, IFormatProvider, DateTimeStyles) Parse(String, IFormatProvider, DateTimeStyles) Parse(String, IFormatProvider, DateTimeStyles) Parse(String, IFormatProvider, DateTimeStyles)

Konwertuje ciąg reprezentujący datę i godzinę na jego DateTime równoważne przy użyciu informacji specyficznych dla kultury i styl formatowania. Converts the string representation of a date and time to its DateTime equivalent by using culture-specific format information and a formatting style.

ParseExact(String, String, IFormatProvider) ParseExact(String, String, IFormatProvider) ParseExact(String, String, IFormatProvider) ParseExact(String, String, IFormatProvider)

Konwertuje określony ciąg reprezentujący datę i godzinę na jego DateTime odpowiednika przy użyciu podanego formatu i informacji o formacie specyficzne dla kultury. Converts the specified string representation of a date and time to its DateTime equivalent using the specified format and culture-specific format information. Format ciągu reprezentującego musi dokładnie pasować do wskazanego formatu. The format of the string representation must match the specified format exactly.

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

Konwertuje określony ciąg reprezentujący datę i godzinę na jego DateTime odpowiednika przy użyciu określonego formatu, informacji o formacie specyficzne dla kultury i 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. Format ciągu reprezentującego musi dokładnie pasować określonego formatu lub jest zgłaszany wyjątek. The format of the string representation must match the specified format exactly or an exception is thrown.

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

Konwertuje określony ciąg reprezentujący datę i godzinę na jego DateTime odpowiednika przy użyciu określonej tablicy formatów, informacji o formacie specyficzne dla kultury i 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. Format ciągu reprezentującego musi dokładnie co najmniej jednego ze wskazanych formatów lub zostanie zgłoszony wyjątek. The format of the string representation must match at least one of the specified formats exactly or an exception is thrown.

SpecifyKind(DateTime, DateTimeKind) SpecifyKind(DateTime, DateTimeKind) SpecifyKind(DateTime, DateTimeKind) SpecifyKind(DateTime, DateTimeKind)

Tworzy nową DateTime obiekt, który ma taką samą liczbę taktów jako określony DateTime, ale jest wyznaczona jako czas lokalny, uniwersalny czas koordynowany (UTC) lub żadnego z tych celów, wskazane przez określony DateTimeKind wartość. 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) Subtract(DateTime) Subtract(DateTime) Subtract(DateTime)

Odejmuje określoną datę i godzinę, z tym wystąpieniem. Subtracts the specified date and time from this instance.

Subtract(TimeSpan) Subtract(TimeSpan) Subtract(TimeSpan) Subtract(TimeSpan)

Odejmuje określonego czasu trwania z tego wystąpienia. Subtracts the specified duration from this instance.

ToBinary() ToBinary() ToBinary() ToBinary()

Serializuje bieżącego DateTime obiekt do 64-bitowych wartości binarnej, który później może służyć do odtworzenia DateTime obiektu. Serializes the current DateTime object to a 64-bit binary value that subsequently can be used to recreate the DateTime object.

ToFileTime() ToFileTime() ToFileTime() ToFileTime()

Konwertuje wartość bieżącego DateTime obiektu na czas pliku Windows. Converts the value of the current DateTime object to a Windows file time.

ToFileTimeUtc() ToFileTimeUtc() ToFileTimeUtc() ToFileTimeUtc()

Konwertuje wartość bieżącego DateTime obiektu na czas pliku Windows. Converts the value of the current DateTime object to a Windows file time.

ToLocalTime() ToLocalTime() ToLocalTime() ToLocalTime()

Konwertuje wartość bieżącego DateTime obiektu na czas lokalny. Converts the value of the current DateTime object to local time.

ToLongDateString() ToLongDateString() ToLongDateString() ToLongDateString()

Konwertuje wartość bieżącego DateTime obiektu na jego reprezentację ciągu równoważne daty długiej. Converts the value of the current DateTime object to its equivalent long date string representation.

ToLongTimeString() ToLongTimeString() ToLongTimeString() ToLongTimeString()

Konwertuje wartość bieżącego DateTime obiektu na jego reprezentację ciągu równoważne dużo czasu. Converts the value of the current DateTime object to its equivalent long time string representation.

ToOADate() ToOADate() ToOADate() ToOADate()

Konwertuje wartość tego wystąpienia na równoważne daty automatyzacji OLE. Converts the value of this instance to the equivalent OLE Automation date.

ToShortDateString() ToShortDateString() ToShortDateString() ToShortDateString()

Konwertuje wartość bieżącego DateTime obiektu na jego reprezentację ciągu równoważne daty krótkiej. Converts the value of the current DateTime object to its equivalent short date string representation.

ToShortTimeString() ToShortTimeString() ToShortTimeString() ToShortTimeString()

Konwertuje wartość bieżącego DateTime obiektu na jego reprezentację ciągu równoważne krótki czas. Converts the value of the current DateTime object to its equivalent short time string representation.

ToString(String, IFormatProvider) ToString(String, IFormatProvider) ToString(String, IFormatProvider) ToString(String, IFormatProvider)

Konwertuje wartość bieżącego DateTime obiektu na jego reprezentację ciągu równoważnego przy użyciu podanego formatu i informacji o formacie specyficzne dla kultury. Converts the value of the current DateTime object to its equivalent string representation using the specified format and culture-specific format information.

ToString(String) ToString(String) ToString(String) ToString(String)

Konwertuje wartość bieżącego DateTime obiektu na jego reprezentację ciągu równoważnego przy użyciu podanego formatu i konwencje formatowania bieżącej kultury. 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(IFormatProvider) ToString(IFormatProvider) ToString(IFormatProvider) ToString(IFormatProvider)

Konwertuje wartość bieżącego DateTime obiektu na jego reprezentację ciągu równoważnego, korzystając z informacji zawartych w określonym formacie specyficzne dla kultury. Converts the value of the current DateTime object to its equivalent string representation using the specified culture-specific format information.

ToString() ToString() ToString() ToString()

Konwertuje wartość bieżącego DateTime obiektu na jego reprezentację ciągu równoważnego przy użyciu konwencji formatowania bieżącej kultury. Converts the value of the current DateTime object to its equivalent string representation using the formatting conventions of the current culture.

ToUniversalTime() ToUniversalTime() ToUniversalTime() ToUniversalTime()

Konwertuje wartość bieżącego DateTime obiektu do uniwersalnego czasu koordynowanego (UTC). Converts the value of the current DateTime object to Coordinated Universal Time (UTC).

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

Konwertuje określony ciąg reprezentujący datę i godzinę na jego DateTime równoważne i zwraca wartość wskazującą, czy konwersja powiodła się. 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) TryParse(String, IFormatProvider, DateTimeStyles, DateTime) TryParse(String, IFormatProvider, DateTimeStyles, DateTime) TryParse(String, IFormatProvider, DateTimeStyles, DateTime)

Konwertuje określony ciąg reprezentujący datę i godzinę na jego DateTime równoważne przy użyciu informacji o określonym formacie specyficzne dla kultury i formatowania stylu i zwraca wartość wskazującą, czy konwersja powiodła się. 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.

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

Konwertuje określony ciąg reprezentujący datę i godzinę na jego DateTime odpowiednika przy użyciu określonego formatu, informacji o formacie specyficzne dla kultury i 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. Format ciągu reprezentującego musi dokładnie pasować do wskazanego formatu. The format of the string representation must match the specified format exactly. Metoda zwraca wartość wskazującą, czy konwersja powiodła się. The method returns a value that indicates whether the conversion succeeded.

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

Konwertuje określony ciąg reprezentujący datę i godzinę na jego DateTime odpowiednika przy użyciu określonej tablicy formatów, informacji o formacie specyficzne dla kultury i 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. Format ciągu reprezentującego musi dokładnie co najmniej jednego ze wskazanych formatów. The format of the string representation must match at least one of the specified formats exactly. Metoda zwraca wartość wskazującą, czy konwersja powiodła się. The method returns a value that indicates whether the conversion succeeded.

Operatory

Addition(DateTime, TimeSpan) Addition(DateTime, TimeSpan) Addition(DateTime, TimeSpan) Addition(DateTime, TimeSpan)

Dodaje określony przedział czasu do określonej daty i godziny, reaguje na nową datę i godzinę. Adds a specified time interval to a specified date and time, yielding a new date and time.

Equality(DateTime, DateTime) Equality(DateTime, DateTime) Equality(DateTime, DateTime) Equality(DateTime, DateTime)

Określa, czy dwa określone wystąpienia elementu DateTime są takie same. Determines whether two specified instances of DateTime are equal.

GreaterThan(DateTime, DateTime) GreaterThan(DateTime, DateTime) GreaterThan(DateTime, DateTime) GreaterThan(DateTime, DateTime)

Określa, czy jeden określony DateTime jest nowsza niż inna określona DateTime. Determines whether one specified DateTime is later than another specified DateTime.

GreaterThanOrEqual(DateTime, DateTime) GreaterThanOrEqual(DateTime, DateTime) GreaterThanOrEqual(DateTime, DateTime) GreaterThanOrEqual(DateTime, DateTime)

Określa, czy jeden określony DateTime reprezentuje datę i godzinę, która jest taka sama, wcześniejsza niż inny określony DateTime. Determines whether one specified DateTime represents a date and time that is the same as or later than another specified DateTime.

Inequality(DateTime, DateTime) Inequality(DateTime, DateTime) Inequality(DateTime, DateTime) Inequality(DateTime, DateTime)

Określa, czy dwa określone wystąpienia elementu DateTime nie są takie same. Determines whether two specified instances of DateTime are not equal.

LessThan(DateTime, DateTime) LessThan(DateTime, DateTime) LessThan(DateTime, DateTime) LessThan(DateTime, DateTime)

Określa, czy jeden określony DateTime jest starsza niż inny określony DateTime. Determines whether one specified DateTime is earlier than another specified DateTime.

LessThanOrEqual(DateTime, DateTime) LessThanOrEqual(DateTime, DateTime) LessThanOrEqual(DateTime, DateTime) LessThanOrEqual(DateTime, DateTime)

Określa, czy jeden określony DateTime reprezentuje datę i godzinę, która jest taka sama, jak lub wcześniej, niż inny określony DateTime. Determines whether one specified DateTime represents a date and time that is the same as or earlier than another specified DateTime.

Subtraction(DateTime, TimeSpan) Subtraction(DateTime, TimeSpan) Subtraction(DateTime, TimeSpan) Subtraction(DateTime, TimeSpan)

Odejmuje określony przedział czasu od określonej daty i godziny i zwraca nową datę i godzinę. Subtracts a specified time interval from a specified date and time and returns a new date and time.

Subtraction(DateTime, DateTime) Subtraction(DateTime, DateTime) Subtraction(DateTime, DateTime) Subtraction(DateTime, DateTime)

Odejmuje określonej daty i czasu z innej określonej daty i godziny, a następnie zwraca przedział czasu. Subtracts a specified date and time from another specified date and time and returns a time interval.

Jawne implementacje interfejsu

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

Ta konwersja nie jest obsługiwana. This conversion is not supported. Podjęto próbę użycia Ta metoda wyrzuca InvalidCastException. Attempting to use this method throws an InvalidCastException.

IConvertible.ToByte(IFormatProvider) IConvertible.ToByte(IFormatProvider) IConvertible.ToByte(IFormatProvider) IConvertible.ToByte(IFormatProvider)

Ta konwersja nie jest obsługiwana. This conversion is not supported. Podjęto próbę użycia Ta metoda wyrzuca InvalidCastException. Attempting to use this method throws an InvalidCastException.

IConvertible.ToChar(IFormatProvider) IConvertible.ToChar(IFormatProvider) IConvertible.ToChar(IFormatProvider) IConvertible.ToChar(IFormatProvider)

Ta konwersja nie jest obsługiwana. This conversion is not supported. Podjęto próbę użycia Ta metoda wyrzuca InvalidCastException. Attempting to use this method throws an InvalidCastException.

IConvertible.ToDateTime(IFormatProvider) IConvertible.ToDateTime(IFormatProvider) IConvertible.ToDateTime(IFormatProvider) IConvertible.ToDateTime(IFormatProvider)

Zwraca bieżącą DateTime obiektu. Returns the current DateTime object.

IConvertible.ToDecimal(IFormatProvider) IConvertible.ToDecimal(IFormatProvider) IConvertible.ToDecimal(IFormatProvider) IConvertible.ToDecimal(IFormatProvider)

Ta konwersja nie jest obsługiwana. This conversion is not supported. Podjęto próbę użycia Ta metoda wyrzuca InvalidCastException. Attempting to use this method throws an InvalidCastException.

IConvertible.ToDouble(IFormatProvider) IConvertible.ToDouble(IFormatProvider) IConvertible.ToDouble(IFormatProvider) IConvertible.ToDouble(IFormatProvider)

Ta konwersja nie jest obsługiwana. This conversion is not supported. Podjęto próbę użycia Ta metoda wyrzuca InvalidCastException. Attempting to use this method throws an InvalidCastException.

IConvertible.ToInt16(IFormatProvider) IConvertible.ToInt16(IFormatProvider) IConvertible.ToInt16(IFormatProvider) IConvertible.ToInt16(IFormatProvider)

Ta konwersja nie jest obsługiwana. This conversion is not supported. Podjęto próbę użycia Ta metoda wyrzuca InvalidCastException. Attempting to use this method throws an InvalidCastException.

IConvertible.ToInt32(IFormatProvider) IConvertible.ToInt32(IFormatProvider) IConvertible.ToInt32(IFormatProvider) IConvertible.ToInt32(IFormatProvider)

Ta konwersja nie jest obsługiwana. This conversion is not supported. Podjęto próbę użycia Ta metoda wyrzuca InvalidCastException. Attempting to use this method throws an InvalidCastException.

IConvertible.ToInt64(IFormatProvider) IConvertible.ToInt64(IFormatProvider) IConvertible.ToInt64(IFormatProvider) IConvertible.ToInt64(IFormatProvider)

Ta konwersja nie jest obsługiwana. This conversion is not supported. Podjęto próbę użycia Ta metoda wyrzuca InvalidCastException. Attempting to use this method throws an InvalidCastException.

IConvertible.ToSByte(IFormatProvider) IConvertible.ToSByte(IFormatProvider) IConvertible.ToSByte(IFormatProvider) IConvertible.ToSByte(IFormatProvider)

Ta konwersja nie jest obsługiwana. This conversion is not supported. Podjęto próbę użycia Ta metoda wyrzuca InvalidCastException. Attempting to use this method throws an InvalidCastException.

IConvertible.ToSingle(IFormatProvider) IConvertible.ToSingle(IFormatProvider) IConvertible.ToSingle(IFormatProvider) IConvertible.ToSingle(IFormatProvider)

Ta konwersja nie jest obsługiwana. This conversion is not supported. Podjęto próbę użycia Ta metoda wyrzuca InvalidCastException. Attempting to use this method throws an InvalidCastException.

IConvertible.ToType(Type, IFormatProvider) IConvertible.ToType(Type, IFormatProvider) IConvertible.ToType(Type, IFormatProvider) IConvertible.ToType(Type, IFormatProvider)

Konwertuje aktualny DateTime obiektu do obiektu określonego typu. Converts the current DateTime object to an object of a specified type.

IConvertible.ToUInt16(IFormatProvider) IConvertible.ToUInt16(IFormatProvider) IConvertible.ToUInt16(IFormatProvider) IConvertible.ToUInt16(IFormatProvider)

Ta konwersja nie jest obsługiwana. This conversion is not supported. Podjęto próbę użycia Ta metoda wyrzuca InvalidCastException. Attempting to use this method throws an InvalidCastException.

IConvertible.ToUInt32(IFormatProvider) IConvertible.ToUInt32(IFormatProvider) IConvertible.ToUInt32(IFormatProvider) IConvertible.ToUInt32(IFormatProvider)

Ta konwersja nie jest obsługiwana. This conversion is not supported. Podjęto próbę użycia Ta metoda wyrzuca InvalidCastException. Attempting to use this method throws an InvalidCastException.

IConvertible.ToUInt64(IFormatProvider) IConvertible.ToUInt64(IFormatProvider) IConvertible.ToUInt64(IFormatProvider) IConvertible.ToUInt64(IFormatProvider)

Ta konwersja nie jest obsługiwana. This conversion is not supported. Podjęto próbę użycia Ta metoda wyrzuca InvalidCastException. Attempting to use this method throws an InvalidCastException.

ISerializable.GetObjectData(SerializationInfo, StreamingContext) ISerializable.GetObjectData(SerializationInfo, StreamingContext) ISerializable.GetObjectData(SerializationInfo, StreamingContext) ISerializable.GetObjectData(SerializationInfo, StreamingContext)

Wypełnia SerializationInfo obiektu z dane potrzebne do serializacji bieżącego DateTime obiektu. Populates a SerializationInfo object with the data needed to serialize the current DateTime object.

Dotyczy

Bezpieczeństwo wątkowe

Wszystkie elementy członkowskie tego typu są bezpieczne wątkowo. All members of this type are thread safe. Elementy członkowskie, które na pierwszy rzut oka modyfikują stan wystąpienia, w rzeczywistości zwracają nowe wystąpienie zainicjowane z nową wartością. Members that appear to modify instance state actually return a new instance initialized with the new value. Podobnie jak w przypadku innych typów odczytywanie i zapisywanie w udostępnionej zmiennej, która zawiera wystąpienie tego typu, musi być chronione przez blokadę w celu zagwarantowania bezpieczeństwa wątków. 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.

Zobacz także