DateTimeOffset.LocalDateTime 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取 DateTime 值,该值表示当前 DateTimeOffset 对象的本地日期和时间。
public:
property DateTime LocalDateTime { DateTime get(); };
public DateTime LocalDateTime { get; }
member this.LocalDateTime : DateTime
Public ReadOnly Property LocalDateTime As DateTime
属性值
当前的 DateTimeOffset 对象的本地日期和时间。
示例
以下示例演示了美国太平洋标准时区中值到本地时间的 DateTimeOffset 多个转换。 请注意,过去三次都是模棱两可的:该属性将所有属性映射到太平洋标准时区中的单个日期和时间。
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
注解
如有必要,该 LocalDateTime 属性会将当前 DateTimeOffset 对象的日期和时间转换为本地系统的日期和时间。 转换是一个双重操作:
该属性将当前 DateTimeOffset 对象的时间转换为协调世界时 (UTC) 。
然后,该属性将 UTC 转换为本地时间。
没有无效的时间,不明确的时间映射到本地区域的标准时间。 但是, (转换可以创建异常:如果 DateTimeOffset 从本地计算机派生的值反映不明确的日期和时间,该值可以转换为 UTC,然后回到与原始时间不同的本地时间。) 属性在执行此转换时,将应用本地时区中的任何调整规则。
此属性返回对象的日期和时间组件DateTimeOffset,这使得它可用于DateTimeOffsetDateTime转换。 除了执行任何必要的时间转换外,此属性DateTime还不同于属性,方法是将返回DateTime对象的属性值设置为 Kind DateTimeKind.Local。