DateTimeOffset 結構
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
表示一個時間點,通常以一天的日期和時間表示 (相對於國際標準時間)。
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 範圍從 12:00:00 午夜、0001 Anno Domini (Common Era) 到 11:59:59:59 P.M.,9999 A.D. (C.E.) 。
重要
日本曆法的紀元是以天皇的統治為基礎,因此有變更是正常的。 例如,2019 年 5 月 1 日之後,JapaneseCalendar 與 JapaneseLunisolarCalendar 中將開始使用「令和」。 此變更對使用這些日曆的所有應用程式都有影響。 如需詳細資訊,以及判斷您的應用程式是否受到影響,請參閱 在 .NET 中處理日曆的新紀元。 如需在 Windows 系統上測試應用程式以確保其對紀元變更整備的資訊,請參閱 為日文紀元變更準備您的應用程式。 如需支援多個紀元之行事歷的 .NET 功能,以及使用支援多個紀元的行事歷時的最佳做法,請參閱 使用紀元。
值的時間元件 DateTimeOffset 是以稱為刻度的 100 奈秒單位來測量,而特定日期則是自 0001 年 1 月 1 日上午 12:00 起算的刻度數。 (C.E.) 行事曆中 GregorianCalendar 。 值 DateTimeOffset 一律以明確或預設行事曆的內容表示。 可除以閏秒為單位的刻度不會包含在刻度總數中。
DateTimeOffset雖然值包含位移,但它不是完整的時區感知數據結構。 雖然UTC的位移是時區的一個特性,但不會明確識別時區。 不僅多個時區與UTC共用相同的位移,如果單一時區觀察到日光節約時間,則單一時區的位移也會變更。 這表示,一旦 DateTimeOffset 值與其時區解除關聯,就無法再明確連結回其原始時區。
因為 DateTimeOffset 是結構, DateTimeOffset 所以已宣告但未初始化的物件包含其每個成員欄位的預設值。 這表示其 DateTime 屬性設定為 DateTimeOffset.MinValue ,且其 Offset 屬性設定為 TimeSpan.Zero。
您可以呼叫其建構函式的任何多載來建立新的 DateTimeOffset 值,這類似於 結構的多載建構 DateTime 函式。 您也可以藉由指派值來DateTime建立新的DateTimeOffset值。 這是隱含轉換;它不需要 C#) 中的轉換運算子 (,或是在 Visual Basic) 中呼叫轉換方法 (。 您也可以 DateTimeOffset 呼叫數個靜態字串剖析方法,包括 Parse、 ParseExact、 TryParse和 TryParseExact,從日期和時間的字串表示初始化值。
結構的成員 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 |
這個常數的值相當於西曆中的國際標準時間 00:00:00.0000000,1970 年 1 月 1 日。 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 |
取得 Coordinated Universal Time (UTC) 的時間位移。 |
Second |
取得目前 DateTimeOffset 物件所表示之時鐘時間的秒數元件。 |
Ticks |
取得刻度數,這個值表示目前 DateTimeOffset 物件之時鐘時間的日期和時間。 |
TimeOfDay |
取得目前 DateTimeOffset 物件之一天中的時間。 |
TotalOffsetMinutes |
取得從國際標準時間 (UTC) 以分鐘為單位的時間位移。 |
UtcDateTime |
取得 DateTime 值,這個值表示目前 DateTimeOffset 物件的 Coordinated Universal Time (UTC) 日期和時間。 |
UtcNow |
取得 DateTimeOffset 物件,這個物件的日期和時間已設定為目前 Coordinated Universal Time (UTC) 日期和時間,且位移為 Zero。 |
UtcTicks |
取得刻度數,這個值表示目前 DateTimeOffset 物件之 Coordinated Universal Time (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 物件。 |