Condividi tramite


DateTimeOffset.LocalDateTime Proprietà

Definizione

Ottiene un valore DateTime che rappresenta la data e l'ora locali dell'oggetto DateTimeOffset corrente.

public:
 property DateTime LocalDateTime { DateTime get(); };
public DateTime LocalDateTime { get; }
member this.LocalDateTime : DateTime
Public ReadOnly Property LocalDateTime As DateTime

Valore della proprietà

DateTime

Data e ora locali dell'oggetto DateTimeOffset corrente.

Esempio

L'esempio seguente illustra diverse conversioni di DateTimeOffset valori in orari locali nel fuso orario standard degli Stati Uniti pacifico. Si noti che le ultime tre volte sono tutte ambigue; la proprietà esegue il mapping di tutti a una singola data e ora nel fuso orario standard del Pacifico.

 DateTimeOffset dto;

 // Current time
 dto = DateTimeOffset.Now;
 Console.WriteLine(dto.LocalDateTime);
 // UTC time
 dto = DateTimeOffset.UtcNow;
 Console.WriteLine(dto.LocalDateTime);

// Transition to DST in local time zone occurs on 3/11/2007 at 2:00 AM
 dto = new DateTimeOffset(2007, 3, 11, 3, 30, 0, new TimeSpan(-7, 0, 0));
 Console.WriteLine(dto.LocalDateTime);
 dto = new DateTimeOffset(2007, 3, 11, 2, 30, 0, new TimeSpan(-7, 0, 0));
 Console.WriteLine(dto.LocalDateTime);
 // Invalid time in local time zone
 dto = new DateTimeOffset(2007, 3, 11, 2, 30, 0, new TimeSpan(-8, 0, 0));
 Console.WriteLine(TimeZoneInfo.Local.IsInvalidTime(dto.DateTime));
 Console.WriteLine(dto.LocalDateTime);

 // Transition from DST in local time zone occurs on 11/4/07 at 2:00 AM
 // This is an ambiguous time
 dto = new DateTimeOffset(2007, 11, 4, 1, 30, 0, new TimeSpan(-7, 0, 0));
 Console.WriteLine(TimeZoneInfo.Local.IsAmbiguousTime(dto));
 Console.WriteLine(dto.LocalDateTime);
 dto = new DateTimeOffset(2007, 11, 4, 2, 30, 0, new TimeSpan(-7, 0, 0));
 Console.WriteLine(TimeZoneInfo.Local.IsAmbiguousTime(dto));
 Console.WriteLine(dto.LocalDateTime);
 // This is also an ambiguous time
 dto = new DateTimeOffset(2007, 11, 4, 1, 30, 0, new TimeSpan(-8, 0, 0));
 Console.WriteLine(TimeZoneInfo.Local.IsAmbiguousTime(dto));
 Console.WriteLine(dto.LocalDateTime);
 // If run on 3/8/2007 at 4:56 PM, the code produces the following
 // output:
 //    3/8/2007 4:56:03 PM
 //    3/8/2007 4:56:03 PM
 //    3/11/2007 3:30:00 AM
 //    3/11/2007 1:30:00 AM
 //    True
 //    3/11/2007 3:30:00 AM
 //    True
 //    11/4/2007 1:30:00 AM
 //    11/4/2007 1:30:00 AM
 //    True
 //    11/4/2007 1:30:00 AM
// Current time
let dto = DateTimeOffset.Now
printfn $"{dto.LocalDateTime}"
// UTC time
let dto = DateTimeOffset.UtcNow
printfn $"{dto.LocalDateTime}"

// Transition to DST in local time zone occurs on 3/11/2007 at 2:00 AM
let dto = DateTimeOffset(2007, 3, 11, 3, 30, 0, TimeSpan(-7, 0, 0))
printfn $"{dto.LocalDateTime}"
let dto = DateTimeOffset(2007, 3, 11, 2, 30, 0, TimeSpan(-7, 0, 0))
printfn $"{dto.LocalDateTime}"
// Invalid time in local time zone
let dto = DateTimeOffset(2007, 3, 11, 2, 30, 0, TimeSpan(-8, 0, 0))
printfn $"{TimeZoneInfo.Local.IsInvalidTime dto.DateTime}"
printfn $"{dto.LocalDateTime}"

// Transition from DST in local time zone occurs on 11/4/07 at 2:00 AM
// This is an ambiguous time
let dto = DateTimeOffset(2007, 11, 4, 1, 30, 0, TimeSpan(-7, 0, 0))
printfn $"{TimeZoneInfo.Local.IsAmbiguousTime dto}"
printfn $"{dto.LocalDateTime}"
let dto = DateTimeOffset(2007, 11, 4, 2, 30, 0, TimeSpan(-7, 0, 0))
printfn $"{TimeZoneInfo.Local.IsAmbiguousTime dto}"
printfn $"{dto.LocalDateTime}"
// This is also an ambiguous time
let dto = DateTimeOffset(2007, 11, 4, 1, 30, 0, TimeSpan(-8, 0, 0))
printfn $"{TimeZoneInfo.Local.IsAmbiguousTime dto}"
printfn $"{dto.LocalDateTime}"

// If run on 3/8/2007 at 4:56 PM, the code produces the following
// output:
//    3/8/2007 4:56:03 PM
//    3/8/2007 4:56:03 PM
//    3/11/2007 3:30:00 AM
//    3/11/2007 1:30:00 AM
//    True
//    3/11/2007 3:30:00 AM
//    True
//    11/4/2007 1:30:00 AM
//    11/4/2007 1:30:00 AM
//    True
//    11/4/2007 1:30:00 AM
 Dim dto As DateTimeOffset

 ' Current time
 dto = DateTimeOffset.Now
 Console.WriteLine(dto.LocalDateTime)
 ' UTC time
 dto = DateTimeOffset.UtcNow
 Console.WriteLine(dto.LocalDateTime)

' Transition to DST in local time zone occurs on 3/11/2007 at 2:00 AM
 dto = New DateTimeOffset(#03/11/2007 3:30AM#, New Timespan(-7, 0, 0))      
 Console.WriteLine(dto.LocalDateTime)
 dto = New DateTimeOffset(#03/11/2007 2:30AM#, New Timespan(-7, 0, 0))
 Console.WriteLine(dto.LocalDateTime)
 ' Invalid time in local time zone
 dto = New DateTimeOffset(#03/11/2007 2:30AM#, New Timespan(-8, 0, 0))
 Console.WriteLine(TimeZoneInfo.Local.IsInvalidTime(dto.DateTime))
 Console.WriteLine(dto.LocalDateTime)

 ' Transition from DST in local time zone occurs on 11/4/07 at 2:00 AM
 ' This is an ambiguous time
 dto = New DateTimeOffset(#11/4/2007 1:30AM#, New TimeSpan(-7, 0, 0))
 Console.WriteLine(TimeZoneInfo.Local.IsAmbiguousTime(dto))
 Console.WriteLine(dto.LocalDateTime)
 dto = New DateTimeOffset(#11/4/2007 2:30AM#, New TimeSpan(-7, 0, 0))           
 Console.WriteLine(TimeZoneInfo.Local.IsAmbiguousTime(dto))
 Console.WriteLine(dto.LocalDateTime)
 ' This is also an ambiguous time
 dto = New DateTimeOffset(#11/4/2007 1:30AM#, New TimeSpan(-8, 0, 0))           
 Console.WriteLine(TimeZoneInfo.Local.IsAmbiguousTime(dto))
 Console.WriteLine(dto.LocalDateTime)
 ' If run on 3/8/2007 at 4:56 PM, the code produces the following
 ' output:
 '    3/8/2007 4:56:03 PM
 '    3/8/2007 4:56:03 PM
 '    3/11/2007 3:30:00 AM
 '    3/11/2007 1:30:00 AM
 '    True
 '    3/11/2007 3:30:00 AM
 '    True
 '    11/4/2007 1:30:00 AM
 '    11/4/2007 1:30:00 AM
 '    True
 '    11/4/2007 1:30:00 AM

Commenti

Se necessario, la LocalDateTime proprietà converte la data e l'ora dell'oggetto corrente DateTimeOffset nella data e nell'ora del sistema locale. La conversione è un'operazione in due passaggi:

  1. La proprietà converte l'ora dell'oggetto corrente DateTimeOffset nell'ora UTC (Coordinated Universal Time).

  2. La proprietà converte quindi l'ora UTC nell'ora locale.

Non sono presenti orari non validi e orari ambigui vengono mappati all'ora solare del fuso orario locale. Tuttavia, la conversione può creare un'anomalia: se un DateTimeOffset valore derivato dal computer locale riflette una data e un'ora ambigue, tale valore può essere convertito in UTC e quindi in un'ora locale diversa dall'ora originale. La proprietà applica tutte le regole di regolazione nel fuso orario locale quando esegue questa conversione.

Questa proprietà restituisce sia la data che il componente ora di un DateTimeOffset oggetto , che rende utile per DateTimeOffset la DateTime conversione. Oltre a eseguire qualsiasi conversione temporale necessaria, questa proprietà è diversa dalla DateTime proprietà impostando il valore della proprietà dell'oggetto Kind restituito DateTime su DateTimeKind.Local.

Si applica a

Vedi anche