簡體   English   中英

如何在 C# 中將 DateTimeOffset 添加到 DateTime?

[英]how to add a DateTimeOffset to a DateTime in C#?

我有一個問題,我有一個DateTimeOffset和一個DateTime ,我想知道如何將 Offset 添加到 DateTime?

DateTimeOffset 例如是 +02:00

文檔: http://msdn.microsoft.com/en-us/library/system.datetimeoffset.aspx說 DateTimeOffset 已經包含 DateTime 和偏移量。

您可能想要使用 TimeSpan 而不是 DateTimeOffset。 TimeSpan 可以添加到 DateTimes。

可悲的是,DateTimeOffset 不是普通人從它的名字中所理解的。 簡單地說,它是一個帶偏移量的 DateTime(也許不完全是這個;但足夠接近)。 在我看來,這是整個 .NET 中命名最差的 class。 該名稱直接來自 SQL 服務器 afaik。 詳細可以參考這個:

http://www.danrigsby.com/blog/index.php/2008/08/23/datetime-vs-datetimeoffset-in-net/

DateTimeOffset class “表示一個時間點,通常表示為相對於協調世界時 (UTC) 的日期和時間。” 它包含DateTime值和偏移量,因此如果要將偏移量添加到DateTime ,則需要使用構造函數創建一個新的DateTimeOffset ,然后使用DateTimeOffsetAddX()函數之一來修改偏移量價值。

var offset = new DateTimeOffset(DateTime.Now);

有關如何從一種轉換到另一種、執行算術等的示例,請參閱此博客文章

假設您需要將 +2:00 添加到DateTime 你可以做,

DateTime dateTime = DateTime.Now.AddHours(2.0);

您可以通過將相關值傳遞給DateTime實例的AddMinutesAddHours來實現它

startDate.AddHours(2)會將當前的 DateTime object 增加 2 小時(減少它將是 -2

或者你可以初始化一個時間跨度 object 像

TimeSpan ts = new TimeSpan(2,0,0);

現在您可以將其添加到您的 DateTime object

startDate= startDate+ ts;

使具有偏移量的無偏移時間(例如 +02:00)的方法是假設 timeZone 是例如 04:00 並且 utc 是 DateTimeOffset 結構,在 GMT 上初始化。

var timeZone = TimeZone.FromSeconds(14400)
var localTime= utc.ToOffset(timeZone)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM