DateTime DateTime DateTime DateTime Struct

Definizione

Rappresenta un istante di tempo, in genere espresso come data e ora del giorno.Represents an instant in time, typically expressed as a date and time of day.

public value class DateTime : IComparable, IComparable<DateTime>, IConvertible, IEquatable<DateTime>, IFormattable, System::Runtime::Serialization::ISerializable
[System.Serializable]
public struct DateTime : IComparable, IComparable<DateTime>, IConvertible, IEquatable<DateTime>, IFormattable, System.Runtime.Serialization.ISerializable
type DateTime = struct
    interface IFormattable
    interface IConvertible
    interface ISerializable
Public Structure DateTime
Implements IComparable, IComparable(Of DateTime), IConvertible, IEquatable(Of DateTime), IFormattable, ISerializable
Ereditarietà
Attributi
Implementazioni

Commenti

Importante

Le ere nel calendario giapponese sono basate sul regno dell'imperatore e pertanto è previsto che cambino.Eras in the Japanese calendars are based on the emperor's reign and are therefore expected to change. Ad esempio, il 1° maggio 2019 contraddistingue l'inizio dell'era Reiwa in JapaneseCalendar e JapaneseLunisolarCalendar.For example, May 1, 2019 marked the beginning of the Reiwa era in the JapaneseCalendar and JapaneseLunisolarCalendar. Questo cambio di era interessa tutte le applicazioni che usano questi calendari.Such a change of era affects all applications that use these calendars. Vedere Handling a new era in the Japanese calendar in .NET (Gestione di una nuova era nel calendario giapponese in .NET) per altre informazioni e per determinare se le proprie applicazioni sono interessate dal cambio.See Handling a new era in the Japanese calendar in .NET for more information and to determine whether your applications are affected. Vedere Prepare your application for the Japanese era change (Preparare l'applicazione per il cambio di era giapponese) per informazioni sul test delle applicazioni nei sistemi Windows per verificare che siano pronte per il cambio di era.See Prepare your application for the Japanese era change for information on testing your applications on Windows systems to ensure their readiness for the era change. Vedere Utilizzo delle ere per informazioni sulle funzionalità in .NET che supportano calendari con più ere e per le procedure consigliate per l'uso dei calendari che supportano più ere.See Working with eras for features in .NET that support calendars with multiple eras and for best practices when working with calendars that support multiple eras.

Nota

Gli esempi in C# in questo articolo vengono eseguiti nello strumento di esecuzione e playground per codice inline Try.NET.The C# examples in this article run in the Try.NET inline code runner and playground. Selezionare il pulsante Esegui per eseguire un esempio in una finestra interattiva.Select the Run button to run an example in an interactive window. Dopo aver eseguito il codice, è possibile modificarlo ed eseguire il codice modificato selezionando di nuovo Esegui.Once you execute the code, you can modify it and run the modified code by selecting Run again. Il codice modificato viene eseguito nella finestra interattiva o, se la compilazione non riesce, la finestra interattiva visualizza tutti i messaggi di errore del compilatore C#.The modified code either runs in the interactive window or, if compilation fails, the interactive window displays all C# compiler error messages.

Il fuso orario locale dello strumento di esecuzione e playground per codice inline Try.NET è Coordinated Universal Time o ora UTC.The local time zone of the Try.NET inline code runner and playground is Coordinated Universal Time, or UTC. Ciò può influire sul comportamento e l'output degli esempi che illustrano i tipi DateTime, DateTimeOffset e TimeZoneInfo e i relativi membri.This may affect the behavior and the output of examples that illustrate the DateTime, DateTimeOffset, and TimeZoneInfo types and their members.

Questo articolo include diversi esempi che usano il DateTime tipo:This article includes several examples that use the DateTime type:

Esempi di inizializzazioneInitialization Examples

Formattazione DateTime oggetti come stringheFormatting DateTime objects as strings

Analisi di stringhe come DateTime oggettiParsing strings as DateTime objects

DateTime RisoluzioneDateTime resolution

Impostazioni cultura e calendariCulture and calendars

PersistenzaPersistence

Questa sezione contiene argomenti per molti utilizzi comuni del DateTime struct:This section contains topics for many common uses of the DateTime struct:

Il DateTime tipo valore rappresenta le date e ore con valori compresi tra 00:00:00 (mezzanotte), il 1 ° gennaio 0001 cristiana (DC Era) attraverso 11: alle 23.59.59, 31 dicembre 9999 D.C.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. (C.E.) nel calendario gregoriano.(C.E.) in the Gregorian calendar.

I valori di ora sono misurati in unità di 100 nanosecondi denominate segni di graduazione.Time values are measured in 100-nanosecond units called ticks. Una determinata data è il numero di tick trascorsi dalla mezzanotte 12:00 del 1 ° gennaio 0001 D.C.A particular date is the number of ticks since 12:00 midnight, January 1, 0001 A.D. (C.E.) nel GregorianCalendar calendario.(C.E.) in the GregorianCalendar calendar. Il numero esclude i segni di graduazione che verrebbero aggiunti per i secondi intercalari.The number excludes ticks that would be added by leap seconds. Ad esempio, un valore di tick di 31241376000000000L rappresenta la data Friday, gennaio 01, 0100 mezzanotte 12:00:00.For example, a ticks value of 31241376000000000L represents the date Friday, January 01, 0100 12:00:00 midnight. Oggetto DateTime valore è espresso sempre nel contesto di un'esplicita o calendario predefinito.A DateTime value is always expressed in the context of an explicit or default calendar.

Nota

Se si lavora con un valore di tick che si desidera convertire in altro intervallo di tempo, ad esempio minuti o secondi, è consigliabile usare la TimeSpan.TicksPerDay, TimeSpan.TicksPerHour, TimeSpan.TicksPerMinute, TimeSpan.TicksPerSecond, o TimeSpan.TicksPerMillisecond costante per eseguire la conversione.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. Ad esempio, per aggiungere il numero di secondi rappresentato da un numero specificato di segni di graduazione per le Second componente di un DateTime valore, è possibile usare l'espressione 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.

È possibile visualizzare l'origine per l'intero set di esempi in questo articolo in uno Visual Basic oppure C# dal repository docs su 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.

Nota

Un'alternativa per il DateTime struttura per l'utilizzo di valori data e ora in particolare fuso orario è il DateTimeOffset struttura.An alternative to the DateTime structure for working with date and time values in particular time zones is the DateTimeOffset structure. Il DateTimeOffset struttura consente di archiviare le informazioni di data e ora in un privato DateTime campo e il numero di minuti mediante il quale data e l'ora è diverso rispetto all'ora UTC in un privato Int16 campo.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. Questo rende possibile per un DateTimeOffset valore in modo da riflettere il tempo in un determinato fuso orario, mentre un DateTime valore in modo non ambiguo può riflettere solo ora UTC e del fuso orario locale.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. Per una discussione su quando usare le DateTime struttura o il DateTimeOffset struttura quando si lavora con valori di data e ora, vedere scelta tra DateTime, DateTimeOffset, TimeSpan e 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.

Inizializzazione di un oggetto DateTimeInitializing a DateTime object

È possibile assegnare un valore iniziale a un nuovo DateTime valore in molti modi diversi:You can assign an initial value to a new DateTime value in many different ways:

  • Chiamare un costruttore, uno in cui si specificano argomenti per i valori, oppure utilizzare il costruttore predefinito implicito.Calling a constructor, either one where you specify arguments for values, or use the implicit default constructor.
  • Assegnazione di un DateTime al valore restituito di una proprietà o metodo.Assigning a DateTime to the return value of a property or method.
  • L'analisi una DateTime valore dalla relativa rappresentazione di stringa.Parsing a DateTime value from its string representation.
  • Usando le funzionalità del linguaggio specifiche per Visual Basic per creare un'istanza di un DateTime.Using Visual Basic-specific language features to instantiate a DateTime.

I frammenti di codice seguenti mostrano esempi di ogni:The following code snippets show examples of each:

Richiamare i costruttoriInvoke Constructors

Chiamare uno degli overload del DateTime costruttore che specificano gli elementi del valore data e ora (ad esempio l'anno, mese e giorno o il numero di tick).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). Il codice seguente crea una data specifica usando il DateTime costruttore specificando l'anno, mese, giorno, ora, minuto e secondo.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);

Si richiama il DateTime costruttore predefinito implicito della struttura quando si desidera che un DateTime inizializzata sul valore predefinito.You invoke the DateTime structure's implicit default constructor when you want a DateTime initialized to its default value. (Per informazioni dettagliate sul costruttore predefinito implicito di un tipo valore, vedere tipi di valore.) Alcuni compilatori supportano anche la dichiarazione di un DateTime valore senza assegnarle un valore in modo esplicito.(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. Creazione di un valore senza un'inizializzazione esplicita anche comporta il valore predefinito.Creating a value without an explicit initialization also results in the default value. Nell'esempio seguente viene illustrato il DateTime costruttore predefinito implicito in C# e Visual Basic, nonché un DateTime dichiarazione senza assegnazione in 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));
Assegnazione di un valore calcolatoAssigning a computed value

È possibile assegnare il DateTime un valore di data e ora restituito dal metodo o proprietà dell'oggetto.You can assign the DateTime object a date and time value returned by a property or method. L'esempio seguente assegna la data corrente e ora, la data corrente Coordinated Universal Time (UTC) e ora e la data corrente a tre nuove DateTime variabili.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;
Analisi di una stringa che rappresenta un valore DateTimeParsing a string that represents a DateTime

Il Parse, ParseExact, TryParse, e TryParseExact tutti i metodi convertono una stringa in relativo equivalente valore data e ora.The Parse, ParseExact, TryParse, and TryParseExact methods all convert a string to its equivalent date and time value. Gli esempi seguenti usano il Parse e ParseExact metodi per analizzare una stringa e convertirla in un DateTime valore.The following examples use the Parse and ParseExact methods to parse a string and convert it to a DateTime value. Il secondo formato adotta un formato supportato dal ISO 8601 standard per una data e ora in formato stringa che rappresenta.The second format uses a form supported by the ISO 8601 standard for a representing date and time in string format. Questa rappresentazione standard viene spesso utilizzata per trasferire le informazioni sulla data nei servizi 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);

Il TryParse e TryParseExact metodi indicano se una stringa è una rappresentazione valida di un DateTime valore e, se si tratta, esegue la conversione.The TryParse and TryParseExact methods indicate whether a string is a valid representation of a DateTime value and, if it is, performs the conversion.

Sintassi specifica del linguaggio per Visual BasicLanguage-specific syntax for Visual Basic

Inizializza una nuova istruzione Visual Basic seguente DateTime valore.The following Visual Basic statement initializes a new DateTime value.

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

I valori DateTime e le relative rappresentazioni di stringaDateTime values and their string representations

Internamente, tutti DateTime valori sono rappresentati come il numero di tick (il numero di intervalli di 100 nanosecondi) che sono trascorsi dalla mezzanotte 12:00:00, il 1 ° gennaio 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. L'effettivo DateTime valore è indipendente dalla modalità in cui tale valore viene visualizzato quando visualizzata.The actual DateTime value is independent of the way in which that value appears when displayed. L'aspetto di un DateTime valore è il risultato di un'operazione di formattazione che converte un valore alla relativa rappresentazione di stringa.The appearance of a DateTime value is the result of a formatting operation that converts a value to its string representation.

L'aspetto dei valori di data e ora è dipendente da impostazioni cultura, gli standard internazionali, i requisiti dell'applicazione e preferenze personali.The appearance of date and time values is dependent on culture, international standards, application requirements, and personal preference. Il DateTime struttura offre flessibilità nella formattazione di data e ora tramite gli overload del ToString.The DateTime structure offers flexibility in formatting date and time values through overloads of ToString. Il valore predefinito DateTime.ToString() restituisce la rappresentazione di stringa di un valore di data e ora usando le impostazioni cultura correnti data breve e ora estesa.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. L'esempio seguente usa il valore predefinito DateTime.ToString() (metodo).The following example uses the default DateTime.ToString() method. Visualizza la data e ora usando il modello di data breve e ora estesa per le impostazioni cultura correnti.It displays the date and time using the short date and long time pattern for the current culture. Le impostazioni cultura en-US sono la lingua corrente nel computer in cui è stato eseguito l'esempio.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

Potrebbe essere necessario formattare le date nelle impostazioni cultura per supportare scenari di web in cui il server potrebbe essere in una lingua diversa dal client.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. Specificare la classe delle impostazioni cultura utilizzando il DateTime.ToString(IFormatProvider) metodo per creare il modello di data breve e rappresentazione dell'ora estesa nelle impostazioni cultura.You specify the culture using the DateTime.ToString(IFormatProvider) method to create the short date and long time representation in a specific culture. L'esempio seguente usa il DateTime.ToString(IFormatProvider) metodo per visualizzare la data e ora usando il modello di data breve e ora estesa per le impostazioni cultura 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

Altre applicazioni possono richiedere diverse rappresentazioni di stringa di una data.Other applications may require different string representations of a date. Il DateTime.ToString(String) restituisce la rappresentazione di stringa definita da un identificatore di formato standard o personalizzata usando le convenzioni di formattazione delle impostazioni cultura correnti.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. L'esempio seguente usa il DateTime.ToString(String) metodo per visualizzare il modello di tempo per en-US e data completa delle impostazioni cultura, le impostazioni cultura correnti del computer in cui è stato eseguito l'esempio.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

Infine, è possibile specificare le impostazioni cultura e il formato tramite il DateTime.ToString(String, IFormatProvider) (metodo).Finally, you can specify both the culture and the format using the DateTime.ToString(String, IFormatProvider) method. L'esempio seguente usa il DateTime.ToString(String, IFormatProvider) metodo per visualizzare la data completa e il modello di tempo per le impostazioni cultura 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

Il DateTime.ToString(String) overload può essere usato anche con una stringa di formato personalizzato per specificare altri formati.The DateTime.ToString(String) overload can also be used with a custom format string to specify other formats. Nell'esempio seguente viene illustrato come formattare una stringa usando il ISO 8601 formato standard spesso usato per i servizi web.The following example shows how to format a string using the ISO 8601 standard format often used for web services. Il formato Iso 8601 non è una stringa di formato standard corrispondente.The Iso 8601 format does not have a corresponding standard format string.

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

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

Per altre informazioni sulla formattazione DateTime valori, vedere Standard Date and Time Format Strings e 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.

Analisi dei valori di data/ora da stringheParsing DateTime values from strings

L'analisi converte la rappresentazione di stringa di data e ora per un DateTime valore.Parsing converts the string representation of a date and time to a DateTime value. In genere, le stringhe di data e ora presentano due diversi utilizzi nelle applicazioni:Typically, date and time strings have two different usages in applications:

  • Data e ora accetta una varietà di forme e riflette le convenzioni delle impostazioni cultura correnti o impostazioni cultura specifiche.A date and time takes a variety of forms and reflects the conventions of either the current culture or a specific culture. Ad esempio, un'applicazione consente a un utente con le impostazioni cultura corrente sono en-US di un valore di data di input come "12/15/2013" o "15 dicembre 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". Consente a un utente il cui impostazioni cultura correnti sono en-gb per un valore di data di input come "15/12/2013" o "15 dicembre 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 e ora è rappresentato in un formato predefinito.A date and time is represented in a predefined format. Ad esempio, un'applicazione serializza una data come "20130103" indipendentemente dalle impostazioni cultura in cui viene eseguita l'app.For example, an application serializes a date as "20130103" independently of the culture on which the app is running. Un'applicazione richieda le date da dati di input in formato di data breve di cultura correnti.An application may require dates be input in the current culture's short date format.

Si utilizza il Parse oppure TryParse metodo per convertire una stringa da uno dei formati comuni di data e ora per impostazioni cultura per un DateTime valore.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. L'esempio seguente illustra come usare TryParse per convertire le stringhe di data in vari formati, impostazioni cultura specifiche per un DateTime valore.The following example shows how you can use TryParse to convert date strings in different culture-specific formats to a DateTime value. Modifica le impostazioni cultura correnti inglese (Gran Bretagna) e chiama il GetDateTimeFormats() metodo per generare una matrice di stringhe di data e ora.It changes the current culture to English (Great Britain) and calls the GetDateTimeFormats() method to generate an array of date and time strings. Passa quindi a ogni elemento nella matrice in cui il TryParse (metodo).It then passes each element in the array to the TryParse method. L'output dell'esempio mostra che il metodo di analisi è stata in grado di convertire correttamente ogni le impostazioni cultura specifiche stringhe data e ora.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

Si utilizza il ParseExact e TryParseExact metodi per convertire una stringa che deve corrispondere a un determinato formato o formati, per un DateTime valore.You use the ParseExact and TryParseExact methods to convert a string that must match a particular format or formats to a DateTime value. Specificare uno o più stringhe di formato data e ora come parametro al metodo di analisi.You specify one or more date and time format strings as a parameter to the parsing method. L'esempio seguente usa il TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) metodo per convertire le stringhe che devono essere in un formato "aaaammgg" o un formato "HHmmss" da DateTime valori.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

Uno degli usi comuni per ParseExact consiste nel convertire una rappresentazione di stringa da un servizio web, in genere nel ISO 8601 formato standard.One common use for ParseExact is to convert a string representation from a web service, usually in ISO 8601 standard format. Il codice seguente mostra la stringa di formato corretto da usare: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}")

Se non è possibile analizzare una stringa, il Parse e ParseExact metodi generano un'eccezione.If a string cannot be parsed, the Parse and ParseExact methods throw an exception. Il TryParse e TryParseExact metodi restituiscono un Boolean valore che indica se la conversione ha avuto esito positivo o negativo.The TryParse and TryParseExact methods return a Boolean value that indicates whether the conversion succeeded or failed. È consigliabile usare la TryParse o TryParseExact metodi negli scenari in cui le prestazioni sono importanti.You should use the TryParse or TryParseExact methods in scenarios where performance is important. L'operazione di analisi per le stringhe di data e ora tende ad avere una frequenza di errori elevata e la gestione delle eccezioni è dispendiosa.The parsing operation for date and time strings tends to have a high failure rate, and exception handling is expensive. Usare questi metodi se le stringhe immesse dagli utenti o provenienti da un'origine sconosciuta.Use these methods if strings are input by users or coming from an unknown source.

Per altre informazioni sull'analisi dei valori di data e ora, vedere l'analisi di stringhe di data e ora.For more information about parsing date and time values, see Parsing Date and Time Strings.

Valori DateTimeDateTime values

Le descrizioni dei valori ora il DateTime tipo sono spesso espressi usando lo standard Coordinated Universal Time (UTC).Descriptions of time values in the DateTime type are often expressed using the Coordinated Universal Time (UTC) standard. Ora UTC è il nome riconosciuto a livello internazionale per ora di Greenwich (GMT).Coordinated Universal Time is the internationally recognized name for Greenwich Mean Time (GMT). Ora UTC è il tempo misurato a zero gradi di longitudine, il punto di origine di ora UTC.Coordinated Universal Time is the time as measured at zero degrees longitude, the UTC origin point. L'ora legale non è applicabile all'ora UTC.Daylight saving time is not applicable to UTC.

Ora locale è relativo a un determinato fuso orario.Local time is relative to a particular time zone. Un fuso orario è associato a una differenza di fuso orario.A time zone is associated with a time zone offset. Una differenza di fuso orario è il dislocamento del fuso orario misurato in ore dal punto di origine di ora UTC.A time zone offset is the displacement of the time zone measured in hours from the UTC origin point. Inoltre, ora locale, facoltativamente, è influenzato dall'ora legale, che aggiunge o sottrae una regolazione dell'intervallo ora.In addition, local time is optionally affected by daylight saving time, which adds or subtracts a time interval adjustment. Ora locale viene calcolato sommando la differenza di fuso orario UTC e la regolazione dell'ora legale se necessario.Local time is calculated by adding the time zone offset to UTC and adjusting for daylight saving time if necessary. La differenza di fuso orario in corrispondenza del punto di origine di ora UTC è uguale a zero.The time zone offset at the UTC origin point is zero.

Ora UTC è adatto per i calcoli, confronti e l'archiviazione di date e ora nei file.UTC time is suitable for calculations, comparisons, and storing dates and time in files. Ora locale è appropriato per la visualizzazione nelle interfacce utente delle applicazioni desktop.Local time is appropriate for display in user interfaces of desktop applications. Applicazioni compatibili con fuso orario (ad esempio, molte applicazioni Web) è anche necessario lavorare con un numero di fusi orari diversi.Time zone-aware applications (such as many Web applications) also need to work with a number of other time zones.

Se il Kind proprietà di un DateTime oggetto DateTimeKind.Unspecified, non viene specificato se l'ora rappresentata è ora locale, ora UTC o un'ora in un fuso orario diverso.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/ora risoluzioneDateTime resolution

Nota

Come alternativa all'esecuzione di una data e ora operazioni aritmetica sul DateTime i valori per misurare il tempo trascorso, è possibile usare il Stopwatch classe.As an alternative to performing date and time arithmetic on DateTime values to measure elapsed time, you can use the Stopwatch class.

Il Ticks espressa dalla proprietà di valori di data e ora in unità di un decimilionesimo di secondo.The Ticks property expresses date and time values in units of one ten-millionth of a second. Il Millisecond proprietà restituisce i millesimi di secondo in un valore di data e ora.The Millisecond property returns the thousandths of a second in a date and time value. Tramite chiamate ripetute al DateTime.Now proprietà per misurare il tempo trascorso è dipendente dal clock di sistema.Using repeated calls to the DateTime.Now property to measure elapsed time is dependent on the system clock. L'orologio di sistema nei sistemi Windows 7 e Windows 8 offre una risoluzione di circa 15 millisecondi.The system clock on Windows 7 and Windows 8 systems has a resolution of approximately 15 milliseconds. Questa risoluzione interessa gli intervalli di tempo piccole inferiore a 100 millisecondi.This resolution affects small time intervals less than 100 milliseconds.

L'esempio seguente illustra la dipendenza della data corrente e i valori di tempo alla risoluzione del clock di sistema.The following example illustrates the dependence of current date and time values on the resolution of the system clock. Nell'esempio, un ciclo esterno viene ripetuto a 20 volte, e un ciclo interno che consente di ritardare il ciclo esterno.In the example, an outer loop repeats 20 times, and an inner loop serves to delay the outer loop. Se il valore del contatore del ciclo esterno è 10, una chiamata al Thread.Sleep metodo introduce un ritardo di cinque millisecondi.If the value of the outer loop counter is 10, a call to the Thread.Sleep method introduces a five-millisecond delay. Nell'esempio seguente mostra il numero di millisecondi restituiti dai DateTime.Now.Milliseconds le modifiche alle proprietà solo dopo la chiamata a 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

Operazioni di data/oraDateTime operations

Un calcolo eseguito utilizzando un DateTime struttura, ad esempio Add o Subtract, non modifica il valore della struttura.A calculation using a DateTime structure, such as Add or Subtract, does not modify the value of the structure. Al contrario, restituisce un nuovo calcolo DateTime struttura il cui valore è il risultato del calcolo.Instead, the calculation returns a new DateTime structure whose value is the result of the calculation.

Operazioni di conversione tra fusi orari, ad esempio tra UTC e l'ora locale, o tra un fuso orario e un altro, considerare l'ora legale, ma non operazioni aritmetiche e di confronto.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.

Il DateTime struttura stessa offre un supporto limitato per la conversione da un fuso orario a un altro.The DateTime structure itself offers limited support for converting from one time zone to another. È possibile usare la ToLocalTime metodo per convertire l'ora UTC in ora locale o è possibile usare il ToUniversalTime metodo per convertire l'ora locale in ora 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. Tuttavia, è disponibile in un set completo di metodi di conversione di fuso orario di TimeZoneInfo classe.However, a full set of time zone conversion methods is available in the TimeZoneInfo class. All'ora in fusi orari diversi utilizzando questi metodi convertire l'ora in uno dei fusi orari del mondo.You convert the time in any one of the world's time zones to the time in any other time zone using these methods.

I calcoli e i confronti di DateTime gli oggetti sono significativi solo se gli oggetti rappresentano i casi nello stesso fuso orario.Calculations and comparisons of DateTime objects are meaningful only if the objects represent times in the same time zone. È possibile usare una TimeZoneInfo oggetto di rappresentare un DateTime fuso orario del valore, anche se i due sono loosely coupled.You can use a TimeZoneInfo object to represent a DateTime value's time zone, although the two are loosely coupled. Oggetto DateTime oggetto non ha una proprietà che restituisce un oggetto che rappresenta la data e ora di fuso orario del valore.A DateTime object does not have a property that returns an object that represents that date and time value's time zone. Il Kind proprietà indica se un DateTime rappresenta l'ora UTC, ora locale, o non è specificato.The Kind property indicates if a DateTime represents UTC, local time, or is unspecified. In un'applicazione compatibile con fuso orario, è necessario basarsi su un meccanismo esterno per determinare il fuso orario in cui un DateTime oggetto è stato creato.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. È possibile usare una struttura che esegue il wrapping di entrambe le DateTime valore e il TimeZoneInfo che rappresenta il DateTime fuso orario del valore.You could use a structure that wraps both the DateTime value and the TimeZoneInfo object that represents the DateTime value's time zone. Per informazioni dettagliate sull'utilizzo di UTC nei calcoli e i confronti con DateTime valori, vedere esecuzione di operazioni aritmetiche con date e ore.For details on using UTC in calculations and comparisons with DateTime values, see Performing Arithmetic Operations with Dates and Times.

Ogni DateTime membro utilizzato in modo implicito il calendario gregoriano per eseguire l'operazione.Each DateTime member implicitly uses the Gregorian calendar to perform its operation. Le eccezioni sono metodi che specificano in modo implicito un calendario.Exceptions are methods that implicitly specify a calendar. Sono inclusi i costruttori che specificano un calendario e i metodi con un parametro derivate da IFormatProvider, ad esempio System.Globalization.DateTimeFormatInfo.These include constructors that specify a calendar, and methods with a parameter derived from IFormatProvider, such as System.Globalization.DateTimeFormatInfo.

Le operazioni con i membri del DateTime tipo prendono in considerazione i dettagli, ad esempio il numero di giorni al mese e gli anni bisestili.Operations by members of the DateTime type take into account details such as leap years and the number of days in a month.

Calendari e i valori DateTimeDateTime values and calendars

La libreria di classi .NET Framework include una serie di classi di calendario, ognuno dei quali sono derivate dal Calendar classe.The .NET Framework Class Library includes a number of calendar classes, all of which are derived from the Calendar class. Ad esempio:They are:

Importante

Le ere nel calendario giapponese sono basate sul regno dell'imperatore e pertanto è previsto che cambino.Eras in the Japanese calendars are based on the emperor's reign and are therefore expected to change. Ad esempio, il 1° maggio 2019 contraddistingue l'inizio dell'era Reiwa in JapaneseCalendar e JapaneseLunisolarCalendar.For example, May 1, 2019 marked the beginning of the Reiwa era in the JapaneseCalendar and JapaneseLunisolarCalendar. Questo cambio di era interessa tutte le applicazioni che usano questi calendari.Such a change of era affects all applications that use these calendars. Vedere Handling a new era in the Japanese calendar in .NET (Gestione di una nuova era nel calendario giapponese in .NET) per altre informazioni e per determinare se le proprie applicazioni sono interessate dal cambio.See Handling a new era in the Japanese calendar in .NET for more information and to determine whether your applications are affected. Vedere Prepare your application for the Japanese era change (Preparare l'applicazione per il cambio di era giapponese) per informazioni sul test delle applicazioni nei sistemi Windows per verificare che siano pronte per il cambio di era.See Prepare your application for the Japanese era change for information on testing your applications on Windows systems to ensure their readiness for the era change. Vedere Utilizzo delle ere per informazioni sulle funzionalità in .NET che supportano calendari con più ere e per le procedure consigliate per l'uso dei calendari che supportano più ere.See Working with eras for features in .NET that support calendars with multiple eras and for best practices when working with calendars that support multiple eras.

Ognuna delle impostazioni cultura viene utilizzato un calendario predefinito definito dalla relativa proprietà di sola lettura CultureInfo.Calendar proprietà.Each culture uses a default calendar defined by its read-only CultureInfo.Calendar property. Ognuna delle impostazioni cultura può supportare uno o più calendari definiti dalla relativa proprietà di sola lettura CultureInfo.OptionalCalendars proprietà.Each culture may support one or more calendars defined by its read-only CultureInfo.OptionalCalendars property. Il calendario attualmente usato da uno specifico CultureInfo oggetto viene definito dalle relative DateTimeFormatInfo.Calendar proprietà.The calendar currently used by a specific CultureInfo object is defined by its DateTimeFormatInfo.Calendar property. Deve essere uno dei calendari trovati nel CultureInfo.OptionalCalendars matrice.It must be one of the calendars found in the CultureInfo.OptionalCalendars array.

Calendario corrente di un'impostazione cultura viene usato in tutte le operazioni di formattazione per le impostazioni cultura.A culture's current calendar is used in all formatting operations for that culture. Ad esempio, il calendario predefinito delle impostazioni cultura buddista Thai è il calendario buddista tailandese, in cui è rappresentato dal ThaiBuddhistCalendar classe.For example, the default calendar of the Thai Buddhist culture is the Thai Buddhist Era calendar, which is represented by the ThaiBuddhistCalendar class. Quando un CultureInfo oggetto che rappresenta le impostazioni cultura buddista Thai viene utilizzato in una data e l'operazione di formattazione dell'ora, per impostazione predefinita viene utilizzato il calendario buddista Thai.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. Il calendario gregoriano viene utilizzato solo se le impostazioni cultura DateTimeFormatInfo.Calendar proprietà viene modificata, come illustrato nell'esempio seguente: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

Calendario corrente di un'impostazione cultura viene usato anche in tutte le operazioni di analisi per le impostazioni cultura, come illustrato nell'esempio seguente.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

Crea un'istanza di un DateTime valore tramite gli elementi di data e ora (numero dell'anno, mese e giorno) di un calendario specifico chiamando un costruttore DateTime che include un calendar parametro e passandogli un Calendaroggetto che rappresenta il calendario.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. L'esempio seguente usa gli elementi di data e ora dal ThaiBuddhistCalendar calendario.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 i costruttori che non includono un calendar parametro presupporre che gli elementi di data e ora sono espressi come unità di misura del calendario gregoriano.DateTime constructors that do not include a calendar parameter assume that the date and time elements are expressed as units in the Gregorian calendar.

Tutti gli altri DateTime proprietà e metodi usano il calendario gregoriano.All other DateTime properties and methods use the Gregorian calendar. Ad esempio, il DateTime.Year proprietà restituisce l'anno del calendario gregoriano e il DateTime.IsLeapYear(Int32) metodo presuppone che il year parametro è un anno del calendario gregoriano.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. Ciascuna DateTime membro che utilizza il calendario gregoriano dispone di un membro corrispondente del Calendar classe che utilizza un calendario specifico.Each DateTime member that uses the Gregorian calendar has a corresponding member of the Calendar class that uses a specific calendar. Ad esempio, il Calendar.GetYear metodo restituisce l'anno in un calendario specifico e il Calendar.IsLeapYear metodo interpreta il year parametro come un numero di anno in un calendario specifico.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. Nell'esempio seguente usa sia la DateTime e i membri corrispondenti del ThaiBuddhistCalendar classe.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

Il DateTime struttura include un DayOfWeek proprietà che restituisce il giorno della settimana del calendario gregoriano.The DateTime structure includes a DayOfWeek property that returns the day of the week in the Gregorian calendar. Non include un membro che consente di recuperare il numero della settimana dell'anno.It does not include a member that allows you to retrieve the week number of the year. Per recuperare la settimana dell'anno, chiamare il calendario singoli Calendar.GetWeekOfYear (metodo).To retrieve the week of the year, call the individual calendar's Calendar.GetWeekOfYear method. Nell'esempio seguente viene illustrato questo concetto.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

Per altre informazioni su date e calendari, vedere utilizzo di calendari.For more information on dates and calendars, see Working with Calendars.

Rendere persistenti i valori DateTimePersisting DateTime values

È possibile rendere persistenti DateTime valori in quattro modi:You can persist DateTime values in four ways:

È necessario assicurarsi che la routine che ripristina il DateTime valori non perdere dati o generare un'eccezione indipendentemente dalla tecnica scelta.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 i valori dovrebbero eseguire il round trip.DateTime values should round-trip. Vale a dire, il valore originale e il valore ripristinato deve essere lo stesso.That is, the original value and the restored value should be the same. E se originale DateTime valore rappresenta un singolo istante nel tempo, consigliabile identificare nello stesso momento di tempo quando viene ripristinata.And if the original DateTime value represents a single instant of time, it should identify the same moment of time when it's restored.

Mantenimento di valori sotto forma di stringhePersisting values as strings

Per ripristinare correttamente DateTime valori che vengono rese persistenti come stringhe, seguire queste regole:To successfully restore DateTime values that are persisted as strings, follow these rules:

  • Apportare le stesse ipotesi sulle informazioni di formattazione specifiche delle impostazioni cultura quando si ripristina la stringa come quando persistente.Make the same assumptions about culture-specific formatting when you restore the string as when you persisted it. Per essere certi che una stringa può essere ripristinata in un sistema le cui impostazioni cultura corrente sono diverse dalle impostazioni cultura del sistema in cui è stato salvato, chiamare il ToString overload per salvare la stringa usando le convenzioni delle impostazioni cultura invarianti.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. Chiamare il Parse(String, IFormatProvider, DateTimeStyles) o TryParse(String, IFormatProvider, DateTimeStyles, DateTime) overload per ripristinare la stringa usando le convenzioni delle impostazioni cultura invarianti.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. Non usare mai i ToString(), Parse(String), o TryParse(String, DateTime) overload, che usa le convenzioni delle impostazioni cultura del thread corrente.Never use the ToString(), Parse(String), or TryParse(String, DateTime) overloads, which use the conventions of the current thread culture.

  • Se la data rappresenta un singolo momento di tempo, assicurarsi che rappresenti lo stesso momento nel tempo quando si è ripristinato, anche in un fuso orario diverso.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. Convertire il DateTime valore a Coordinated Universal Time (UTC) prima di salvarlo.Convert the DateTime value to Coordinated Universal Time (UTC) before saving it. È anche possibile serializzare il valore insieme a informazioni sul fuso orario.You can also serialize the value along with time zone information. Per altre informazioni su questo approccio, vedere i dati di serializzazione di data/ora e fuso orario.For more information about this approach, see Serializing DateTime and time zone data.

L'errore più comune effettuata quando rende persistente DateTime valori sotto forma di stringhe consiste nel basarsi sulle convenzioni di formattazione degli account predefiniti o impostazioni cultura correnti.The most common error made when persisting DateTime values as strings is to rely on the formatting conventions of the default or current culture. I problemi si verificano se le impostazioni cultura correnti è diversa durante il salvataggio e il ripristino le stringhe.Problems arise if the current culture is different when saving and restoring the strings. L'esempio seguente illustra questi problemi.The following example illustrates these problems. Salva le cinque date usando le convenzioni di formattazione delle impostazioni cultura correnti, in questo caso è l'inglese (Stati Uniti).It saves five dates using the formatting conventions of the current culture, which in this case is English (United States). Ripristina le date usando le convenzioni di formattazione delle impostazioni cultura diverse, ovvero in questo caso l'inglese (Gran Bretagna).It restores the dates using the formatting conventions of a different culture, which in this case is English (Great Britain). Poiché le convenzioni di formattazione delle impostazioni due cultura sono diverse, due delle date non possono essere ripristinati e le date di tre rimanenti vengono interpretate in modo non corretto.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. Inoltre, se i valori originali di data e ora rappresentano singoli istante nel tempo, ripristinato volte in cui non sono corrette perché vengono perse informazioni sul fuso orario.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...

Eseguire il round trip DateTime valori correttamente, seguono questa procedura:To round-trip DateTime values successfully, follow these steps:

  1. Se i valori rappresentano singoli istante di tempo, convertirli dall'ora locale in formato UTC chiamando il ToUniversalTime (metodo).If the values represent single moments of time, convert them from the local time to UTC by calling the ToUniversalTime method.
  2. Convertire le date nelle relative rappresentazioni di stringa chiamando il ToString(String, IFormatProvider) o String.Format(IFormatProvider, String, Object[]) rapporto di overload.Convert the dates to their string representations by calling the ToString(String, IFormatProvider) or String.Format(IFormatProvider, String, Object[]) overload. Usare le convenzioni di formattazione della cultura invariabile, specificando CultureInfo.InvariantCulture come il provider argomento.Use the formatting conventions of the invariant culture by specifying CultureInfo.InvariantCulture as the provider argument. Specificare che il valore deve essere il round trip usando la stringa di formato standard "O" o "R".Specify that the value should round-trip by using the "O" or "R" standard format string.

Per ripristinare la classe resa persistente DateTime valori senza perdita di dati, seguire questa procedura:To restore the persisted DateTime values without data loss, follow these steps:

  1. Analizzare i dati chiamando il ParseExact o TryParseExact rapporto di overload.Parse the data by calling the ParseExact or TryParseExact overload. Specificare CultureInfo.InvariantCulture come il provider argomento e usare lo stesso formato standard di stringa è stata usata per il format argomento durante la conversione.Specify CultureInfo.InvariantCulture as the provider argument, and use the same standard format string you used for the format argument during conversion. Includere il DateTimeStyles.RoundtripKind valore il styles argomento.Include the DateTimeStyles.RoundtripKind value in the styles argument.
  2. Se il DateTime valori rappresentano singoli istante nel tempo, chiamata di ToLocalTime metodo per convertire la data analizzata rispetto all'ora UTC nell'ora locale.If the DateTime values represent single moments in time, call the ToLocalTime method to convert the parsed date from UTC to local time.

L'esempio seguente usa la lingua inglese e la stringa di formato standard "O" per garantire che DateTime salvati e ripristinati i valori rappresentano lo stesso momento, indipendentemente dal sistema, impostazioni cultura o fuso orario dei sistemi di origine e destinazione.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...
Rendere persistenti i valori come numeri interiPersisting values as integers

È possibile mantenere una data e ora come un Int64 valore che rappresenta un numero di tick.You can persist a date and time as an Int64 value that represents a number of ticks. In questo caso, non è necessario prendere in considerazione le impostazioni cultura dei sistemi di DateTime valori vengono salvati in modo permanente e ripristinati in.In this case, you don't have to consider the culture of the systems the DateTime values are persisted and restored on.

Per rendere persistente un DateTime valore come numero intero:To persist a DateTime value as an integer:

  • Se il DateTime i valori rappresentano determinati momenti singoli, convertirli in formato UTC chiamando il ToUniversalTime (metodo).If the DateTime values represent single moments in time, convert them to UTC by calling the ToUniversalTime method.
  • Recuperare il numero di tick rappresentato dal DateTime valore dal relativo Ticks proprietà.Retrieve the number of ticks represented by the DateTime value from its Ticks property.

Per ripristinare un DateTime valore che è stata resa persistente come valore integer:To restore a DateTime value that has been persisted as an integer:

  1. Creare un'istanza di una nuova DateTime passando il Int64 valore per il DateTime(Int64) costruttore.Instantiate a new DateTime object by passing the Int64 value to the DateTime(Int64) constructor.
  2. Se il DateTime valore rappresenta un singolo momento, convertirlo dall'ora UTC nell'ora locale chiamando il ToLocalTime (metodo).If the DateTime value represents a single moment in time, convert it from UTC to the local time by calling the ToLocalTime method.

Nell'esempio seguente mantiene una matrice di DateTime valori come numeri interi in un sistema in Stati Uniti. fuso orario Pacifico (Stati Uniti).The following example persists an array of DateTime values as integers on a system in the U.S. Pacific Time zone. Questo viene ripristinato in un sistema nel fuso orario UTC.It restores it on a system in the UTC zone. Il file che contiene i numeri interi include un' Int32 valore che indica il numero totale di Int64 valori che lo segue immediatamente.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...

La serializzazione dei valori DateTimeSerializing DateTime values

È possibile rendere persistenti DateTime valori attraverso la serializzazione di un flusso o file e quindi ripristinare tali attraverso la deserializzazione.You can persist DateTime values through serialization to a stream or file, and then restore them through deserialization. DateTime i dati viene serializzati in un formato di oggetto specificato.DateTime data is serialized in some specified object format. Gli oggetti vengono ripristinati quando vengono deserializzate.The objects are restored when they are deserialized. Un formattatore o un serializzatore, ad esempio XmlSerializer o BinaryFormatter, gestisce il processo di serializzazione e deserializzazione.A formatter or serializer, such as XmlSerializer or BinaryFormatter, handles the process of serialization and deserialization. Per altre informazioni sulla serializzazione e i tipi di serializzazione supportato da .NET Framework, vedere serializzazione.For more information about serialization and the types of serialization supported by the .NET Framework, see Serialization.

L'esempio seguente usa il XmlSerializer classe per serializzare e deserializzare DateTime valori.The following example uses the XmlSerializer class to serialize and deserialize DateTime values. I valori rappresentano tutti i giorni anno bisestile il ventunesimo secolo.The values represent all leap year days in the twenty-first century. L'output rappresenta il risultato se nell'esempio viene eseguito in un sistema le cui impostazioni cultura correnti è inglese (Gran Bretagna).The output represents the result if the example is run on a system whose current culture is English (Great Britain). Poiché è stata deserializzata di DateTime oggetto stesso, il codice non è necessario gestire le differenze culturali di formati di data e ora.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

Nell'esempio precedente non include informazioni sull'ora.The previous example doesn't include time information. Se un DateTime valore rappresenta un momento specifico e viene espresso come ora locale, convertirlo dall'ora locale in ora UTC prima di serializzarlo chiamando il ToUniversalTime (metodo).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. Dopo che deserializzarlo, convertirlo dall'ora UTC nell'ora locale chiamando il ToLocalTime (metodo).After you deserialize it, convert it from UTC to local time by calling the ToLocalTime method. L'esempio seguente usa il BinaryFormatter classe per serializzare DateTime dati in un sistema in Stati Uniti. Fuso orario ora solare Pacifico e deserializzarlo in un sistema in Stati Uniti. Orario Standard centrale.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...

La serializzazione dei dati di data/ora e fuso orarioSerializing DateTime and time zone data

Tutti gli esempi precedenti, si suppone che DateTime valori sono espressi come ora locale.The previous examples all assumed that DateTime values are expressed as local times. Il codice di convertita i valori compresi tra UTC e l'ora locale in modo che riflettano nello stesso momento nel tempo in sistemi di origine e destinazione.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 i valori possono inoltre riflettere istante nel tempo in un fuso orario diverso da local e l'ora UTC.DateTime values may also reflect moments in time in a time zone other than local and UTC. Poiché il DateTime struttura non è compatibile con fuso orario, è necessario serializzare sia il DateTime valore e il TimeZoneInfo oggetto che rappresenta il fuso orario.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. Creare un tipo i cui campi includono entrambi il DateTime valore e il relativo fuso orario.Create a type whose fields include both the DateTime value and its time zone. L'esempio seguente definisce un DateWithTimeZone struttura.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

Importante

Il DateWithTimeZone struttura viene usata negli esempi successivi due quale serializzare e deserializzare una matrice di DateWithTimeZone oggetti.The DateWithTimeZone structure is used in the next two examples, which serialize and deserialize an array of DateWithTimeZone objects. È possibile visualizzare l'origine per l'intero set di esempi in questo articolo in uno Visual Basic oppure C# dal repository docs su 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.

Tramite il DateWithTimeZone struttura, poterlo mentenere data e ora insieme a informazioni sul fuso orario.By using the DateWithTimeZone structure, you can then persist date and time along with time zone information. L'esempio seguente usa il BinaryFormatter classe per serializzare una matrice di DateWithTimeZone oggetti.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

L'esempio seguente chiama quindi il BinaryFormatter.Deserialize metodo deserializzarlo.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

Visual Studio di data/ora. TimeSpanDateTime vs. TimeSpan

Il DateTime e TimeSpan tipi di valore differiscono in quanto un DateTime rappresenta un istante di tempo, mentre un TimeSpan rappresenta un intervallo di tempo.The DateTime and TimeSpan value types differ in that a DateTime represents an instant in time whereas a TimeSpan represents a time interval. È possibile sottrarre un'istanza di DateTime da un altro per ottenere un TimeSpan oggetto che rappresenta l'intervallo di tempo tra di essi.You can subtract one instance of DateTime from another to obtain a TimeSpan object that represents the time interval between them. Oppure è possibile aggiungere un numero positivo TimeSpan all'oggetto corrente DateTime per ottenere un DateTime valore che rappresenta una data futura.Or you could add a positive TimeSpan to the current DateTime to obtain a DateTime value that represents a future date.

È possibile aggiungere o sottrarre un intervallo di tempo da una DateTime oggetto.You can add or subtract a time interval from a DateTime object. Gli intervalli di tempo possono essere positivo o negativo e possono essere espressi in unità di misura, ad esempio i segni di graduazione, secondi, o come un TimeSpan oggetto.Time intervals can be negative or positive, and they can be expressed in units such as ticks, seconds, or as a TimeSpan object.

Confronto di uguaglianza compresa nella tolleranzaComparing for equality within tolerance

I confronti di uguaglianza per DateTime valori siano esatti.Equality comparisons for DateTime values are exact. Ciò significa che due valori devono essere espresse come lo stesso numero di segni di graduazione per essere considerate uguali.That means two values must be expressed as the same number of ticks to be considered equal. Che la precisione è spesso non necessari o addirittura non corretta per molte applicazioni.That precision is often unnecessary or even incorrect for many applications. Spesso, si desidera testare se DateTime gli oggetti vengono approssimativamente uguale.Often, you want to test if DateTime objects are roughly equal.

Nell'esempio seguente viene illustrato come confrontare più o meno equivalente DateTime valori.The following example demonstrates how to compare roughly equivalent DateTime values. Accetta un piccolo margine di differenza quando si dichiara essi uguali.It accepts a small margin of difference when declaring them equal.

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

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

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

    Return Math.Abs(delta) < windowInSeconds
End Function

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

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

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

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

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

Considerazioni sull'interoperabilità COMCOM interop considerations

Oggetto DateTime valore che viene trasferito a un'applicazione COM e quindi trasferito nuovamente a un'applicazione gestita, esegue il round trip.A DateTime value that is transferred to a COM application, then is transferred back to a managed application, is said to round-trip. Tuttavia, un DateTime valore che specifica un periodo di tempo non andata e ritorno come è prevedibile.However, a DateTime value that specifies only a time does not round-trip as you might expect.

Se è andata solo un'ora, ad esempio le 15.00, la data finale e l'ora è il 30 dicembre 1899 E.V.If you round-trip only a time, such as 3 P.M., the final date and time is December 30, 1899 C.E. alle 3 P.M., invece, 1 ° gennaio 0001 E.V.at 3:00 P.M., instead of January, 1, 0001 C.E. alle ore 15.00: 00at 3:00 P.M. .NET Framework e COM presuppone un valore date predefinito quando viene specificato un periodo di tempo.The .NET Framework and COM assume a default date when only a time is specified. Tuttavia, il sistema COM presuppone una data di base di 30 dicembre 1899 D.C., mentre .NET Framework presuppone una data di base, 1 ° gennaio 0001 E.V.However, the COM system assumes a base date of December 30, 1899 C.E., while the .NET Framework assumes a base date of January, 1, 0001 C.E.

Quando solo una volta che viene passata da .NET Framework a COM, viene eseguita un'elaborazione speciale che converte l'ora nel formato usato da 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. Quando solo una volta che viene passata da COM a .NET Framework, non viene eseguita alcuna elaborazione speciale perché che danneggiasse legittime date e ore entro il 30 dicembre 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. Se una data di inizio relativa round trip da COM, .NET Framework e COM mantiene la data.If a date starts its round-trip from COM, the .NET Framework and COM preserve the date.

Il comportamento di .NET Framework e COM significa che se i round trip dell'applicazione una DateTime che specifica solo una volta, l'applicazione è necessario ricordarsi di modificare o ignorare la data non corretti da finale DateTime oggetto.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.

Costruttori

DateTime(Int64) DateTime(Int64) DateTime(Int64) DateTime(Int64)

Inizializza una nuova istanza della struttura DateTime su un numero di tick specificato.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)

Inizializza una nuova istanza della struttura DateTime su un numero specificato di tick e sull'ora UTC (Coordinated Universal Time) oppure sull'ora locale.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)

Inizializza una nuova istanza della struttura DateTime su anno, mese e giorno specificati.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)

Inizializza una nuova istanza della struttura DateTime su anno, mese e giorno indicati per il calendario specificato.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)

Inizializza una nuova istanza della struttura DateTime su anno, mese, giorno, ora, minuto e secondo specificati.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)

Inizializza una nuova istanza della struttura DateTime su anno, mese, giorno, ora, minuto, secondo e ora UTC (Coordinated Universal Time) oppure ora locale specificati.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)

Inizializza una nuova istanza della struttura DateTime su anno, mese, giorno, ora, minuto e secondo determinati per il calendario specificato.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)

Inizializza una nuova istanza della struttura DateTime su anno, mese, giorno, ora, minuto, secondo e millisecondo specificati.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)

Inizializza una nuova istanza della struttura DateTime su anno, mese, giorno, ora, minuto, secondo, millisecondo e ora UTC (Coordinated Universal Time) oppure ora locale specificati.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)

Inizializza una nuova istanza della struttura DateTime su anno, mese, giorno, ora, minuto, secondo e millisecondo determinati per il calendario specificato.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)

Inizializza una nuova istanza della struttura DateTime su anno, mese, giorno, ora, minuto, secondo, millisecondo e ora UTC (Coordinated Universal Time) oppure ora locale specificati per il calendario indicato.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.

Campi

MaxValue MaxValue MaxValue MaxValue

Rappresenta il valore massimo possibile di DateTime.Represents the largest possible value of DateTime. Questo campo è di sola lettura.This field is read-only.

MinValue MinValue MinValue MinValue

Rappresenta il valore più piccolo possibile di DateTime.Represents the smallest possible value of DateTime. Questo campo è di sola lettura.This field is read-only.

UnixEpoch UnixEpoch UnixEpoch UnixEpoch

Proprietà

Date Date Date Date

Ottiene il componente di data dell'istanza.Gets the date component of this instance.

Day Day Day Day

Ottiene il giorno del mese rappresentato dall'istanza.Gets the day of the month represented by this instance.

DayOfWeek DayOfWeek DayOfWeek DayOfWeek

Ottiene il giorno della settimana rappresentato dall'istanza.Gets the day of the week represented by this instance.

DayOfYear DayOfYear DayOfYear DayOfYear

Ottiene il giorno dell'anno rappresentato dall'istanza.Gets the day of the year represented by this instance.

Hour Hour Hour Hour

Ottiene il componente di ora della data rappresentata dall'istanza.Gets the hour component of the date represented by this instance.

Kind Kind Kind Kind

Ottiene un valore che indica se l'ora rappresentata dall'istanza si basa sull'ora locale, sull'ora UTC (Coordinated Universal Time) o su nessuna delle due.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

Ottiene il componente di millisecondi della data rappresentata dall'istanza.Gets the milliseconds component of the date represented by this instance.

Minute Minute Minute Minute

Ottiene il componente di minuti della data rappresentata dall'istanza.Gets the minute component of the date represented by this instance.

Month Month Month Month

Ottiene il componente di mese della data rappresentata dall'istanza.Gets the month component of the date represented by this instance.

Now Now Now Now

Ottiene un oggetto DateTime impostato su data e ora correnti sul computer, espresso come ora locale.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

Ottiene il componente di secondi della data rappresentata dall'istanza.Gets the seconds component of the date represented by this instance.

Ticks Ticks Ticks Ticks

Ottiene il numero di tick che rappresentano data e ora dell'istanza.Gets the number of ticks that represent the date and time of this instance.

TimeOfDay TimeOfDay TimeOfDay TimeOfDay

Ottiene l'ora del giorno per l'istanza.Gets the time of day for this instance.

Today Today Today Today

Ottiene la data corrente.Gets the current date.

UtcNow UtcNow UtcNow UtcNow

Ottiene un oggetto DateTime impostato su data e ora correnti sul computer, espresso come ora UTC (Coordinated Universal Time).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

Ottiene il componente dell'anno della data rappresentata dall'istanza.Gets the year component of the date represented by this instance.

Metodi

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

Restituisce un nuovo oggetto DateTime che aggiunge il valore dell'oggetto TimeSpan specificato al valore di questa istanza.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)

Restituisce un nuovo oggetto DateTime che aggiunge il numero specificato di giorni al valore di questa istanza.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)

Restituisce un nuovo oggetto DateTime che aggiunge il numero specificato di ore al valore di questa istanza.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)

Restituisce un nuovo oggetto DateTime che aggiunge il numero specificato di millisecondi al valore di questa istanza.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)

Restituisce un nuovo oggetto DateTime che aggiunge il numero specificato di minuti al valore di questa istanza.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)

Restituisce un nuovo oggetto DateTime che aggiunge il numero specificato di mesi al valore di questa istanza.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)

Restituisce un nuovo oggetto DateTime che aggiunge il numero specificato di secondi al valore di questa istanza.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)

Restituisce un nuovo oggetto DateTime che aggiunge il numero specificato di tick al valore di questa istanza.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)

Restituisce un nuovo oggetto DateTime che aggiunge il numero specificato di anni al valore di questa istanza.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)

Confronta due istanze di DateTime e restituisce un intero che indica se la prima istanza è precedente, uguale o successiva alla seconda istanza.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)

Confronta il valore di questa istanza con un valore DateTime specificato e restituisce un intero che indica se l'istanza è precedente, uguale o successiva al valore DateTime specificato.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)

Confronta il valore di questa istanza con un oggetto specificato contenente un valore DateTime specificato e restituisce un intero che indica se l'istanza è precedente, uguale o successiva al valore DateTime specificato.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)

Restituisce il numero di giorni del mese specificato dell'anno specificato.Returns the number of days in the specified month and year.

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

Restituisce un valore che indica se due istanze di DateTime presentano lo stesso valore di data e ora.Returns a value indicating whether two DateTime instances have the same date and time value.

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

Restituisce un valore che indica se il valore di questa istanza è uguale al valore dell'istanza di DateTime specificata.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)

Restituisce un valore che indica se questa istanza è uguale a un oggetto specificato.Returns a value indicating whether this instance is equal to a specified object.

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

Deserializza un valore binario a 64 bit e ricrea un oggetto originale DateTime serializzato.Deserializes a 64-bit binary value and recreates an original serialized DateTime object.

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

Converte l'ora specificata di un file di Windows in un'ora locale equivalente.Converts the specified Windows file time to an equivalent local time.

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

Converte l'ora di un file di Windows specificata in un'ora UTC equivalente.Converts the specified Windows file time to an equivalent UTC time.

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

Restituisce un oggetto DateTime equivalente alla data di automazione OLE specificata.Returns a DateTime equivalent to the specified OLE Automation Date.

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

Converte il valore dell'istanza in tutte le rappresentazioni di stringa supportate dagli identificatori di formato di data e ora standard.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)

Converte il valore dell'istanza in tutte le rappresentazioni di stringa supportate dall'identificatore di formato di data e ora standard specificato.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)

Converte il valore dell'istanza in tutte le rappresentazioni di stringa supportate dagli identificatori di formato di data e ora standard e dalle informazioni di formattazione relative alle impostazioni cultura specificate.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)

Converte il valore dell'istanza in tutte le rappresentazioni di stringa supportate dall'identificatore di formato di data e ora standard e dalle informazioni di formattazione specifiche delle impostazioni cultura.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()

Restituisce il codice hash per l'istanza.Returns the hash code for this instance.

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

Restituisce l'oggetto TypeCode del tipo di valore DateTime.Returns the TypeCode for value type DateTime.

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

Indica se l'istanza dell'oggetto DateTime è compresa nell'intervallo l'ora legale del fuso orario corrente.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)

Restituisce un'indicazione che informa se l'anno specificato è bisestile.Returns an indication whether the specified year is a leap year.

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

Converte la rappresentazione di stringa di una data e di un'ora nell'oggetto DateTime equivalente usando le convenzioni delle impostazioni cultura del thread corrente.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)

Converte una determinata rappresentazione di stringa di una data e di un'ora nel relativo DateTime equivalente usando le informazioni sul formato relative alle impostazioni cultura specificate.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)

Converte un intervallo di memoria che contiene la rappresentazione stringa di una data e di un'ora nell'oggetto DateTime equivalente usando le informazioni sul formato specifiche delle impostazioni cultura e uno stile di formattazione.Converts a memory span that contains string representation of a date and time to its DateTime equivalent by using culture-specific format information and a formatting style.

Parse(String, IFormatProvider, DateTimeStyles) Parse(String, IFormatProvider, DateTimeStyles) Parse(String, IFormatProvider, DateTimeStyles) Parse(String, IFormatProvider, DateTimeStyles)

Converte la rappresentazione di stringa di una data e di un'ora nell'oggetto DateTime equivalente usando le informazioni sul formato specifiche delle impostazioni cultura e uno stile di formattazione.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)

Converte una determinata rappresentazione di stringa di una data e di un'ora nel relativo oggetto DateTime equivalente usando il formato specificato e le informazioni sul formato relative alle impostazioni cultura specificate.Converts the specified string representation of a date and time to its DateTime equivalent using the specified format and culture-specific format information. Il formato della rappresentazione di stringa deve corrispondere esattamente al formato specificato.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)

Converte una determinata rappresentazione di stringa di una data e di un'ora nell'oggetto DateTime equivalente usando il formato, le informazioni sul formato specifiche delle impostazioni cultura e lo stile specificati.Converts the specified string representation of a date and time to its DateTime equivalent using the specified format, culture-specific format information, and style. Il formato della rappresentazione di stringa deve corrispondere esattamente al formato specificato. In caso contrario, verrà generata un'eccezione.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)

Converte una determinata rappresentazione di stringa di una data e di un'ora nell'oggetto DateTime equivalente usando la matrice di formati, le informazioni sul formato specifiche delle impostazioni cultura e lo stile specificati.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. Il formato della rappresentazione di stringa deve corrispondere esattamente ad almeno uno dei formati specificati; in caso contrario, verrà generata un'eccezione.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)

Crea un nuovo oggetto DateTime che ha lo stesso numero di tick dell'oggetto DateTime specificato, ma viene definito come ora locale, ora UTC (Coordinated Universal Time) o nessuna delle due, a seconda di quanto indicato nel valore di DateTimeKind specificato.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)

Sottrae la data e l'ora specificate dall'istanza.Subtracts the specified date and time from this instance.

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

Sottrae la durata specificata dall'istanza.Subtracts the specified duration from this instance.

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

Serializza l'oggetto DateTime corrente in un valore binario a 64 bit che può essere quindi usato per ricreare l'oggetto DateTime.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()

Converte il valore dell'oggetto DateTime corrente in un'ora di un file di Windows.Converts the value of the current DateTime object to a Windows file time.

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

Converte il valore dell'oggetto DateTime corrente in un'ora di un file di Windows.Converts the value of the current DateTime object to a Windows file time.

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

Converte il valore dell'oggetto DateTime corrente in un'ora locale.Converts the value of the current DateTime object to local time.

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

Converte il valore dell'oggetto DateTime corrente nell'equivalente rappresentazione di stringa della data estesa.Converts the value of the current DateTime object to its equivalent long date string representation.

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

Converte il valore dell'oggetto DateTime corrente nell'equivalente rappresentazione di stringa dell'ora estesa.Converts the value of the current DateTime object to its equivalent long time string representation.

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

Converte il valore dell'istanza nella data di automazione OLE equivalente.Converts the value of this instance to the equivalent OLE Automation date.

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

Converte il valore dell'oggetto DateTime corrente nell'equivalente rappresentazione di stringa della data breve.Converts the value of the current DateTime object to its equivalent short date string representation.

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

Converte il valore dell'oggetto DateTime corrente nell'equivalente rappresentazione di stringa dell'ora breve.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)

Converte il valore dell'oggetto DateTime corrente nella rappresentazione di stringa equivalente, usando il formato specificato e le informazioni sul formato specifiche delle impostazioni cultura indicate.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)

Converte il valore dell'oggetto DateTime corrente nella rappresentazione di stringa equivalente, usando il formato specificato e le convenzioni di formattazione delle impostazioni cultura.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)

Converte il valore dell'oggetto DateTime corrente nella rappresentazione di stringa equivalente, usando le informazioni sul formato relative alle impostazioni cultura specificate.Converts the value of the current DateTime object to its equivalent string representation using the specified culture-specific format information.

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

Converte il valore dell'oggetto DateTime corrente nella rappresentazione di stringa equivalente, usando le convenzioni di formattazione delle impostazioni cultura.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()

Converte il valore dell'oggetto DateTime corrente nell'ora UTC (Coordinated Universal Time).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)

Converte la rappresentazione di stringa specificata di una data e di un'ora nell'equivalente DateTime e restituisce un valore che indica se la conversione è stata eseguita correttamente.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)

Converte una determinata rappresentazione di stringa di una data e di un'ora nell'equivalente DateTime usando le informazioni sul formato specifico delle impostazioni cultura e lo stile di formattazione specifici, quindi restituisce un valore che indica se la conversione è stata eseguita correttamente.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)

Converte una determinata rappresentazione di stringa di una data e di un'ora nell'oggetto DateTime equivalente usando il formato, le informazioni sul formato specifiche delle impostazioni cultura e lo stile specificati.Converts the specified string representation of a date and time to its DateTime equivalent using the specified format, culture-specific format information, and style. Il formato della rappresentazione di stringa deve corrispondere esattamente al formato specificato.The format of the string representation must match the specified format exactly. Il metodo restituisce un valore che indica se la conversione è stata eseguita correttamente.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)

Converte una determinata rappresentazione di stringa di una data e di un'ora nell'oggetto DateTime equivalente usando la matrice di formati, le informazioni sul formato specifiche delle impostazioni cultura e lo stile specificati.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. Il formato della rappresentazione di stringa deve corrispondere esattamente ad almeno uno dei formati specificati.The format of the string representation must match at least one of the specified formats exactly. Il metodo restituisce un valore che indica se la conversione è stata eseguita correttamente.The method returns a value that indicates whether the conversion succeeded.

Operatori

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

Aggiunge un determinato intervallo di tempo a una data e a un'ora specificate, producendo una data e un'ora nuove.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)

Determina se due istanze specificate dell'oggetto DateTime sono uguali.Determines whether two specified instances of DateTime are equal.

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

Determina se un DateTime specificato è successivo a un altro DateTime specificato.Determines whether one specified DateTime is later than another specified DateTime.

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

Determina se un oggetto DateTime specificato rappresenta una data e ora uguali o successive a un altro oggetto DateTime specificato.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)

Determina se due istanze specificate dell'oggetto DateTime non sono uguali.Determines whether two specified instances of DateTime are not equal.

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

Determina se un oggetto DateTime specificato è precedente a un altro oggetto DateTime specificato.Determines whether one specified DateTime is earlier than another specified DateTime.

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

Determina se un oggetto DateTime specificato rappresenta una data e ora uguali o precedenti a un altro oggetto DateTime specificato.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)

Sottrae un intervallo di tempo specificato da una data e un'ora specificate e restituisce una data e un'ora nuove.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)

Sottrae una data e un'ora specificate da un'altra data e un'altra ora specificate e restituisce un intervallo di tempo.Subtracts a specified date and time from another specified date and time and returns a time interval.

Implementazioni dell'interfaccia esplicita

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)

Questa conversione non è supportata.This conversion is not supported. Il tentativo di usare questo metodo genera un'eccezione InvalidCastException.Attempting to use this method throws an InvalidCastException.

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

Questa conversione non è supportata.This conversion is not supported. Il tentativo di usare questo metodo genera un'eccezione InvalidCastException.Attempting to use this method throws an InvalidCastException.

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

Questa conversione non è supportata.This conversion is not supported. Il tentativo di usare questo metodo genera un'eccezione InvalidCastException.Attempting to use this method throws an InvalidCastException.

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

Restituisce l'attuale oggetto DateTime.Returns the current DateTime object.

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

Questa conversione non è supportata.This conversion is not supported. Il tentativo di usare questo metodo genera un'eccezione InvalidCastException.Attempting to use this method throws an InvalidCastException.

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

Questa conversione non è supportata.This conversion is not supported. Il tentativo di usare questo metodo genera un'eccezione InvalidCastException.Attempting to use this method throws an InvalidCastException.

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

Questa conversione non è supportata.This conversion is not supported. Il tentativo di usare questo metodo genera un'eccezione InvalidCastException.Attempting to use this method throws an InvalidCastException.

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

Questa conversione non è supportata.This conversion is not supported. Il tentativo di usare questo metodo genera un'eccezione InvalidCastException.Attempting to use this method throws an InvalidCastException.

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

Questa conversione non è supportata.This conversion is not supported. Il tentativo di usare questo metodo genera un'eccezione InvalidCastException.Attempting to use this method throws an InvalidCastException.

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

Questa conversione non è supportata.This conversion is not supported. Il tentativo di usare questo metodo genera un'eccezione InvalidCastException.Attempting to use this method throws an InvalidCastException.

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

Questa conversione non è supportata.This conversion is not supported. Il tentativo di usare questo metodo genera un'eccezione 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)

Converte l'oggetto DateTime corrente in un oggetto di un tipo specificato.Converts the current DateTime object to an object of a specified type.

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

Questa conversione non è supportata.This conversion is not supported. Il tentativo di usare questo metodo genera un'eccezione InvalidCastException.Attempting to use this method throws an InvalidCastException.

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

Questa conversione non è supportata.This conversion is not supported. Il tentativo di usare questo metodo genera un'eccezione InvalidCastException.Attempting to use this method throws an InvalidCastException.

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

Questa conversione non è supportata.This conversion is not supported. Il tentativo di usare questo metodo genera un'eccezione 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)

Compila un oggetto SerializationInfo con i dati necessari per serializzare l'oggetto DateTime corrente.Populates a SerializationInfo object with the data needed to serialize the current DateTime object.

Si applica a

Thread safety

Tutti i membri di questo tipo sono thread-safe.All members of this type are thread safe. I membri che sembrano modificare lo stato dell'istanza è in realtà restituiscono una nuova istanza inizializzata con il nuovo valore.Members that appear to modify instance state actually return a new instance initialized with the new value. Come con qualsiasi altro tipo, la lettura e scrittura in una variabile condivisa che contiene un'istanza di questo tipo deve essere protetto da un blocco per garantire la thread safety.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.

Vedi anche