DateTimeOffset 结构
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示一个时间点,通常以相对于协调世界时 (UTC) 的日期和时间来表示。
public value class DateTimeOffset : IComparable, IComparable<DateTimeOffset>, IEquatable<DateTimeOffset>, IFormattable
public value class DateTimeOffset : IComparable, IComparable<DateTimeOffset>, IEquatable<DateTimeOffset>, IFormattable, System::Runtime::Serialization::IDeserializationCallback, System::Runtime::Serialization::ISerializable
public value class DateTimeOffset : IComparable, IComparable<DateTimeOffset>, IEquatable<DateTimeOffset>, ISpanFormattable, System::Runtime::Serialization::IDeserializationCallback, System::Runtime::Serialization::ISerializable
public value class DateTimeOffset : IComparable, IComparable<DateTimeOffset>, IEquatable<DateTimeOffset>, IParsable<DateTimeOffset>, ISpanFormattable, ISpanParsable<DateTimeOffset>, System::Runtime::Serialization::IDeserializationCallback, System::Runtime::Serialization::ISerializable
public value class DateTimeOffset : IComparable, IComparable<DateTimeOffset>, IEquatable<DateTimeOffset>, IParsable<DateTimeOffset>, ISpanFormattable, ISpanParsable<DateTimeOffset>, IUtf8SpanFormattable, System::Runtime::Serialization::IDeserializationCallback, System::Runtime::Serialization::ISerializable
public struct DateTimeOffset : IComparable, IComparable<DateTimeOffset>, IEquatable<DateTimeOffset>, IFormattable
public readonly struct DateTimeOffset : IComparable, IComparable<DateTimeOffset>, IEquatable<DateTimeOffset>, IFormattable, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
public readonly struct DateTimeOffset : IComparable, IComparable<DateTimeOffset>, IEquatable<DateTimeOffset>, ISpanFormattable, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
public readonly struct DateTimeOffset : IComparable, IComparable<DateTimeOffset>, IEquatable<DateTimeOffset>, IParsable<DateTimeOffset>, ISpanFormattable, ISpanParsable<DateTimeOffset>, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
public readonly struct DateTimeOffset : IComparable, IComparable<DateTimeOffset>, IEquatable<DateTimeOffset>, IParsable<DateTimeOffset>, ISpanFormattable, ISpanParsable<DateTimeOffset>, IUtf8SpanFormattable, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
public struct DateTimeOffset : IComparable, IComparable<DateTimeOffset>, IEquatable<DateTimeOffset>, IFormattable, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
[System.Serializable]
public struct DateTimeOffset : IComparable, IComparable<DateTimeOffset>, IEquatable<DateTimeOffset>, IFormattable, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
type DateTimeOffset = struct
interface IFormattable
type DateTimeOffset = struct
interface IFormattable
interface IDeserializationCallback
interface ISerializable
type DateTimeOffset = struct
interface ISpanFormattable
interface IFormattable
interface IDeserializationCallback
interface ISerializable
type DateTimeOffset = struct
interface IFormattable
interface IParsable<DateTimeOffset>
interface ISpanFormattable
interface ISpanParsable<DateTimeOffset>
interface IDeserializationCallback
interface ISerializable
type DateTimeOffset = struct
interface IFormattable
interface IParsable<DateTimeOffset>
interface ISpanFormattable
interface ISpanParsable<DateTimeOffset>
interface IDeserializationCallback
interface ISerializable
interface IUtf8SpanFormattable
type DateTimeOffset = struct
interface IFormattable
interface IParsable<DateTimeOffset>
interface ISpanFormattable
interface ISpanParsable<DateTimeOffset>
interface IUtf8SpanFormattable
interface IDeserializationCallback
interface ISerializable
[<System.Serializable>]
type DateTimeOffset = struct
interface IFormattable
interface ISerializable
interface IDeserializationCallback
Public Structure DateTimeOffset
Implements IComparable, IComparable(Of DateTimeOffset), IEquatable(Of DateTimeOffset), IFormattable
Public Structure DateTimeOffset
Implements IComparable, IComparable(Of DateTimeOffset), IDeserializationCallback, IEquatable(Of DateTimeOffset), IFormattable, ISerializable
Public Structure DateTimeOffset
Implements IComparable, IComparable(Of DateTimeOffset), IDeserializationCallback, IEquatable(Of DateTimeOffset), ISerializable, ISpanFormattable
Public Structure DateTimeOffset
Implements IComparable, IComparable(Of DateTimeOffset), IDeserializationCallback, IEquatable(Of DateTimeOffset), IParsable(Of DateTimeOffset), ISerializable, ISpanFormattable, ISpanParsable(Of DateTimeOffset)
Public Structure DateTimeOffset
Implements IComparable, IComparable(Of DateTimeOffset), IDeserializationCallback, IEquatable(Of DateTimeOffset), IParsable(Of DateTimeOffset), ISerializable, ISpanFormattable, ISpanParsable(Of DateTimeOffset), IUtf8SpanFormattable
- 继承
- 属性
- 实现
注解
结构 DateTimeOffset 包括一个 DateTime 值,以及一个 Offset 属性,该属性定义当前 DateTimeOffset 实例的日期和时间与协调世界时 (UTC) 之间的差异。 由于它确切地定义了相对于 UTC 的日期和时间, DateTimeOffset 因此结构不包括 Kind
成员,因为结构会如此 DateTime 。 它表示其 UTC 范围为 0001 年 1 月 1 日午夜 12:00:00, (Common Era) ,到 9999 年 12 月 31 日晚上 11:59:59:59 的日期和时间 (C.E.) 。
重要
日本历法中的年号是根据天皇统治来命名的,因此预计会发生变化。 例如,2019 年 5 月 1 日在 JapaneseCalendar 和 JapaneseLunisolarCalendar 中标志着令和年号的开始。 这种年号的变化会影响使用这些日历的所有应用程序。 有关详细信息并确定应用程序是否受到影响,请参阅 在 .NET 中处理日语日历中的新纪元。 有关在 Windows 系统上测试应用程序以确保其为时代更改做好准备的信息,请参阅 为日本时代更改准备应用程序。 有关 .NET 中支持具有多个纪元的日历的功能以及使用支持多个纪元的日历时的最佳做法,请参阅 使用纪元。
值的时间分量 DateTimeOffset 以 100 纳秒的单位(称为刻度)度量,特定日期是自 0001 年 1 月 1 日午夜 12:00 以来的刻度数, (日历中的 GregorianCalendar C.E.) 。 DateTimeOffset值始终在显式或默认日历的上下文中表示。 可归因于闰秒的时钟周期不包括在时钟周期总数中。
DateTimeOffset虽然值包含偏移量,但它不是完全可感知时区的数据结构。 虽然与 UTC 的偏移量是时区的一个特征,但它不能明确标识时区。 多个时区不仅共享与 UTC 相同的偏移量,而且如果观察到夏令时,单个时区的偏移量会更改。 这意味着,一旦 DateTimeOffset 某个值与其时区取消关联,就不能再明确将其链接回其原始时区。
因为 DateTimeOffset 是一个结构, DateTimeOffset 因此已声明但未以其他方式初始化的对象包含其每个成员字段的默认值。 这意味着其 DateTime 属性设置为 DateTimeOffset.MinValue ,其 Offset 属性设置为 TimeSpan.Zero。
可以通过调用其构造函数的任何重载来创建新 DateTimeOffset 值,这类似于结构的重载构造函数 DateTime 。 还可以通过为其赋值DateTime来创建新DateTimeOffset值。 这是隐式转换;它不需要在 C#) 中 (强制转换运算符,也不需要调用 Visual Basic) 中 (转换方法。 还可以通过调用许多静态字符串分析方法(包括 、、 TryParse和 TryParseExact)从日期和时间的字符串表示形式初始化DateTimeOffset值。 ParseExactParse
结构的成员 DateTimeOffset 在以下方面提供功能:
日期和时间算术。
可以从特定 DateTimeOffset 值中添加或减去日期或时间间隔。 与具有 DateTimeOffset 值的算术运算不同 DateTime ,在返回结果时会根据时间偏移量的差异进行调整。 例如,以下代码使用 DateTime 变量从当前 UTC 时间减去当前本地时间。 然后,代码使用 DateTimeOffset 变量执行相同的操作。 带 DateTime 值的减法返回本地时区与 UTC 的差,而带 DateTimeOffset 值的减法返回 TimeSpan.Zero。
using System; public class DateArithmetic { public static void Main() { DateTime date1, date2; DateTimeOffset dateOffset1, dateOffset2; TimeSpan difference; // Find difference between Date.Now and Date.UtcNow date1 = DateTime.Now; date2 = DateTime.UtcNow; difference = date1 - date2; Console.WriteLine("{0} - {1} = {2}", date1, date2, difference); // Find difference between Now and UtcNow using DateTimeOffset dateOffset1 = DateTimeOffset.Now; dateOffset2 = DateTimeOffset.UtcNow; difference = dateOffset1 - dateOffset2; Console.WriteLine("{0} - {1} = {2}", dateOffset1, dateOffset2, difference); // If run in the Pacific Standard time zone on 4/2/2007, the example // displays the following output to the console: // 4/2/2007 7:23:57 PM - 4/3/2007 2:23:57 AM = -07:00:00 // 4/2/2007 7:23:57 PM -07:00 - 4/3/2007 2:23:57 AM +00:00 = 00:00:00 } }
open System // Find difference between Date.Now and Date.UtcNow let date1 = DateTime.Now let date2 = DateTime.UtcNow let difference1 = date1 - date2 printfn $"{date1} - {date2} = {difference1}" // Find difference between Now and UtcNow using DateTimeOffset let dateOffset1 = DateTimeOffset.Now let dateOffset2 = DateTimeOffset.UtcNow let difference2 = dateOffset1 - dateOffset2 printfn $"{dateOffset1} - {dateOffset2} = {difference2}" // If run in the Pacific Standard time zone on 1/7/2022, the example // displays the following output to the console: // 1/7/2022 6:45:10 PM - 1/8/2022 2:45:10 AM = -08:00:00.0072573 // 1/7/2022 6:45:10 PM -08:00 - 1/8/2022 2:45:10 AM +00:00 = -00:00:00.0000278
Module DateArithmetic Public Sub Main() Dim date1, date2 As Date Dim dateOffset1, dateOffset2 As DateTimeOffset Dim difference As TimeSpan ' Find difference between Date.Now and Date.UtcNow date1 = Date.Now date2 = Date.UtcNow difference = date1 - date2 Console.WriteLine("{0} - {1} = {2}", date1, date2, difference) ' Find difference between Now and UtcNow using DateTimeOffset dateOffset1 = date.Now dateOffset2 = date.UtcNow difference = dateOffset1 - dateOffset2 Console.WriteLine("{0} - {1} = {2}", _ dateOffset1, dateOffset2, difference) ' If run in the Pacific Standard time zone on 4/2/2007, the example ' displays the following output to the console: ' 4/2/2007 7:23:57 PM - 4/3/2007 2:23:57 AM = -07:00:00 ' 4/2/2007 7:23:57 PM -07:00 - 4/3/2007 2:23:57 AM +00:00 = 00:00:00 End Sub End Module
类型转换操作。
可以将值转换为DateTimeOffsetDateTime值,反之亦然。
时间操作和提取操作。
可以提取值的日期或时间 DateTimeOffset 。 还可以检索特定 DateTimeOffset 组件的值,例如其年份或月份。
注意
如果使用的是要转换为其他时间间隔(如分钟或秒)的刻度线值,则应使用 TimeSpan.TicksPerDay、 TimeSpan.TicksPerHour、 TimeSpan.TicksPerMinute、 TimeSpan.TicksPerSecond或 TimeSpan.TicksPerMillisecond 常量来执行转换。 例如,若要将指定时钟周期数表示的秒数添加到 Second 值的组件 DateTimeOffset ,可以使用表达式 dateValue.Second + nTicks/Timespan.TicksPerSecond
。
日期和时间转换。
可以将任何 DateTimeOffset 值转换为另一个 DateTimeOffset 值,该值表示另一个时区中的相同时间点。 但是,时区的调整规则仅适用于 ToLocalTime 方法,该方法将值转换为 DateTimeOffset 本地系统区域中的日期和时间。
日期和时间比较。
可以确定任何特定 DateTimeOffset 值是早于、相同还是晚于另一个 DateTimeOffset 值。 在执行比较之前,所有值都会转换为 UTC。
构造函数
字段
MaxValue |
表示 DateTimeOffset 的最大可能值。 此字段为只读。 |
MinValue |
表示可能的最早 DateTimeOffset 值。 此字段为只读。 |
UnixEpoch |
此常量的值等效于公历 1970 年 1 月 1 日的 00:00:00.0000000 UTC。 UnixEpoch 定义 Unix 时间等于 0 的时间点。 |
属性
Date |
获取 DateTime 值,该值表示当前 DateTimeOffset 对象的日期组成部分。 |
DateTime |
获取 DateTime 值,该值表示当前 DateTimeOffset 对象的日期和时间。 |
Day |
获取由当前 DateTimeOffset 对象所表示的月中的某一天。 |
DayOfWeek |
获取由当前 DateTimeOffset 对象所表示的周中的某一天。 |
DayOfYear |
获取由当前 DateTimeOffset 对象所表示的年中的某一天。 |
Hour |
获取由当前 DateTimeOffset 对象所表示的时间的小时组成部分。 |
LocalDateTime |
获取 DateTime 值,该值表示当前 DateTimeOffset 对象的本地日期和时间。 |
Microsecond |
获取当前 DateTimeOffset 对象表示的时间的微秒分量。 |
Millisecond |
获取由当前 DateTimeOffset 对象所表示的时间的毫秒组成部分。 |
Minute |
获取由当前 DateTimeOffset 对象所表示的时间的分钟组成部分。 |
Month |
获取由当前 DateTimeOffset 对象所表示的日期的月份组成部分。 |
Nanosecond |
获取当前 DateTimeOffset 对象表示的时间的纳秒分量。 |
Now |
获取一个 DateTimeOffset 对象,该对象设置为当前计算机上的当前日期和时间,偏移量设置为本地时间与协调世界时 (UTC) 之间的偏移量。 |
Offset |
获取与协调世界时 (UTC) 之间的时间偏移量。 |
Second |
获取由当前 DateTimeOffset 对象所表示的时钟时间的秒组成部分。 |
Ticks |
获取计时周期数,此计时周期数表示时钟时间中当前 DateTimeOffset 对象的日期和时间。 |
TimeOfDay |
获取当前 DateTimeOffset 对象的日时。 |
TotalOffsetMinutes |
获取协调世界时 (UTC) 的时间偏移量(以分钟为单位)。 |
UtcDateTime |
获取一个 DateTime 值,该值表示当前 DateTimeOffset 对象的协调世界时 (UTC) 日期和时间。 |
UtcNow |
获取一个 DateTimeOffset 对象,其日期和时间设置为当前的协调世界时 (UTC) 日期和时间,其偏移量为 Zero。 |
UtcTicks |
获取表示当前 DateTimeOffset 对象的协调世界时 (UTC) 日期和时间的计时周期数。 |
Year |
获取由当前 DateTimeOffset 对象所表示的日期的年份组成部分。 |
方法
运算符
Addition(DateTimeOffset, TimeSpan) |
将指定的时间间隔与具有指定日期和时间的 DateTimeOffset 对象相加,产生一个具有新的日期和时间的 DateTimeOffset 对象。 |
Equality(DateTimeOffset, DateTimeOffset) |
确定两个指定的 DateTimeOffset 对象是否表示同一时间点。 |
GreaterThan(DateTimeOffset, DateTimeOffset) |
确定一个指定的 DateTimeOffset 对象是否大于(或晚于)另一个指定的 DateTimeOffset 对象。 |
GreaterThanOrEqual(DateTimeOffset, DateTimeOffset) |
确定一个指定的 DateTimeOffset 对象是大于还是等于另一个指定的 DateTimeOffset 对象。 |
Implicit(DateTime to DateTimeOffset) |
定义从 DateTime 对象到 DateTimeOffset 对象的隐式转换。 |
Inequality(DateTimeOffset, DateTimeOffset) |
确定两个指定的 DateTimeOffset 对象是否表示不同的时间点。 |
LessThan(DateTimeOffset, DateTimeOffset) |
确定一个指定的 DateTimeOffset 对象是否小于另一个指定的 DateTimeOffset 对象。 |
LessThanOrEqual(DateTimeOffset, DateTimeOffset) |
确定一个指定的 DateTimeOffset 对象是否小于另一个指定的 DateTimeOffset 对象。 |
Subtraction(DateTimeOffset, DateTimeOffset) |
从一个 DateTimeOffset 对象中减去另一个对象并生成时间间隔。 |
Subtraction(DateTimeOffset, TimeSpan) |
从指定的日期和时间减去指定的时间间隔,并生成新的日期和时间。 |
显式接口实现
IComparable.CompareTo(Object) |
将当前 DateTimeOffset 对象的值与相同类型的另一个对象的值进行比较。 |
IDeserializationCallback.OnDeserialization(Object) |
在对象的反序列化完成时运行。 |
ISerializable.GetObjectData(SerializationInfo, StreamingContext) |
使用序列化当前 SerializationInfo 对象所需的数据来填充 DateTimeOffset 对象。 |