DateTimeOffset 結構
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
代表一個時間點,通常以相對於協調世界時(UTC)的日期和時間表示。
public value class DateTimeOffset : IComparable, IComparable<DateTimeOffset>, IEquatable<DateTimeOffset>, IFormattable
public value class DateTimeOffset : IComparable, IComparable<DateTimeOffset>, IEquatable<DateTimeOffset>, IParsable<DateTimeOffset>, ISpanFormattable, ISpanParsable<DateTimeOffset>, IUtf8SpanFormattable, System::Runtime::Serialization::IDeserializationCallback, System::Runtime::Serialization::ISerializable
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 struct DateTimeOffset : IComparable, IComparable<DateTimeOffset>, IEquatable<DateTimeOffset>, IFormattable
public readonly struct DateTimeOffset : IComparable, IComparable<DateTimeOffset>, IEquatable<DateTimeOffset>, IParsable<DateTimeOffset>, ISpanFormattable, ISpanParsable<DateTimeOffset>, IUtf8SpanFormattable, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
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 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 IParsable<DateTimeOffset>
interface ISpanFormattable
interface ISpanParsable<DateTimeOffset>
interface IUtf8SpanFormattable
interface IDeserializationCallback
interface ISerializable
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
[<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), IParsable(Of DateTimeOffset), ISerializable, ISpanFormattable, ISpanParsable(Of DateTimeOffset), IUtf8SpanFormattable
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)
- 繼承
- 屬性
- 實作
備註
該 DateTimeOffset 結構包含一個 DateTime 值,以及 Offset 一個定義當前 DateTimeOffset 實例日期與時間與協調世界時(UTC)差異的屬性。 由於它精確定義了相對於UTC的日期和時間,結構 DateTimeOffset 中不包含 Kind 成員,而本 DateTime 結構則包含成員。 它代表的日期和時間,UTC 範圍從公元元年 1 月 1 日午夜 12:00:00 到 西元19999年12月31日晚上 11:59:59。
這很重要
日本日曆中的紀元基於皇帝的統治,因此預計將改變。 例如,2019 年 5 月 1 日在 JapaneseCalendar 和 JapaneseLunisolarCalendar中標示了 Reiwa 時代的開頭。 這種時代變更會影響使用這些行事曆的所有應用程式。 如需詳細資訊,以及判斷您的應用程式是否受到影響,請參閱 處理 .NET 中日曆中的新紀元。 如需在 Windows 系統上測試應用程式,以確保其準備迎接時代變更的相關信息,請參閱 準備您的應用程式以取得日本年號變更。 如需 .NET 中支援具有多個紀元的行事曆功能,以及使用支援多個紀元的行事曆時的最佳作法,請參閱 使用紀元。
一個數值的時間 DateTimeOffset 成分以100奈秒單位(稱為刻度)來衡量,而特定日期則是自公元0001年1月1日午夜12點以來,在曆法上的 GregorianCalendar 刻度數。 DateTimeOffset 值一律在明確或預設的日曆背景下表示。 可歸因於閏秒的刻度不包含在總刻數中。
雖然值 DateTimeOffset 包含偏移量,但它並非完全感知時區的資料結構。 雖然與UTC的偏移是時區的一個特徵,但它並不明確地標示時區。 不僅多個時區與UTC有相同的偏移,如果一個時區實行夏令時間,該時區的偏移也會改變。 這表示,一旦某個 DateTimeOffset 數值與其時區脫離,就無法再明確地連結回原本的時區。
由於 DateTimeOffset 是一個結構 DateTimeOffset ,已宣告但未另行初始化的物件會包含其每個成員欄位的預設值。 這表示其 DateTime 性質設為 , DateTimeOffset.MinValue 性質 Offset 設為 TimeSpan.Zero。
你可以透過呼叫其建構子的任一超載來建立新 DateTimeOffset 值,這些超載與結構的 DateTime 超載建構子相似。 你也可以透過賦DateTime值來創造新的DateTimeOffset值。 這是一種隱含的轉換;它不需要鑄造運算子(在 C# 中)或呼叫轉換方法(在 Visual Basic 中)。 你也可以透過呼叫多種靜態字串解析方法(包括 、 、 TryParse、 和 TryParseExact)來初始DateTimeOffset化日期與時間的字串表示ParseExact值。Parse
結構成員 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.0000278Module 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型號轉換作業。
你可以將數值轉換 DateTimeOffset 成 DateTime 數值,反之亦然。
時間操控與抽取操作。
你可以提取某個 DateTimeOffset 數值的日期或時間。 你也可以取得特定 DateTimeOffset 元件的值,例如年份或月份。
備註
如果你處理的是一個 ticks 值,想轉換成其他時間區間,例如分鐘或秒,你應該使用 TimeSpan.TicksPerDay、 TimeSpan.TicksPerHour、 TimeSpan.TicksPerMinuteTimeSpan.TicksPerSecond、 或 TimeSpan.TicksPerMillisecond 常數來進行轉換。 例如,若要將指定刻度數所代表的秒數加入至 Second 值的 DateTimeOffset 元件,您可以使用運算式
dateValue.Second + nTicks/Timespan.TicksPerSecond。日期與時間轉換。
你可以將任何 DateTimeOffset 值轉換成代表同一時區、另一個時區的值 DateTimeOffset 。 然而,時區的調整規則僅適用於 ToLocalTime 將數 DateTimeOffset 值轉換為當地系統區域的日期與時間的方法。
日期和時間的比較。
你可以判斷某個特定 DateTimeOffset 值是比另一個 DateTimeOffset 值早、相同還是晚。 在進行比較前,所有數值都會轉換成UTC。
建構函式
欄位
| 名稱 | Description |
|---|---|
| MaxValue |
代表 的 DateTimeOffset最大可能值。 此欄位是唯讀的。 |
| MinValue |
代表最早可能 DateTimeOffset 的值。 此欄位是唯讀的。 |
| UnixEpoch |
此常數的值相當於1970年1月1日(格里曆)00:00:00.00000000 UTC。 UnixEpoch 定義了 Unix 時間等於 0 的時間點。 |
屬性
| 名稱 | Description |
|---|---|
| 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 物件所代表日期的年份成分。 |
方法
操作員
| 名稱 | Description |
|---|---|
| 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) |
從指定日期和時間減去指定時間區間,得到一個新的日期和時間。 |
明確介面實作
| 名稱 | Description |
|---|---|
| IComparable.CompareTo(Object) |
比較當前 DateTimeOffset 物件與同類型物件的值。 |
| IDeserializationCallback.OnDeserialization(Object) |
當物件完成反序列化後執行。 |
| ISerializable.GetObjectData(SerializationInfo, StreamingContext) |
將序列化當前DateTimeOffset物件所需的資料填充物件SerializationInfo。 |