У меня проблема, у меня есть DateTimeOffset
и DateTime
, и я хочу знать, как добавить Offset в DateTime?
DateTimeOffset, например. +02: 00
У меня проблема, у меня есть DateTimeOffset
и DateTime
, и я хочу знать, как добавить Offset в DateTime?
DateTimeOffset, например. +02: 00
Документация: http://msdn.microsoft.com/en-us/library/system.datetimeoffset.aspx говорит, что DateTimeOffset уже содержит DateTime и смещение.
Вероятно, вы захотите использовать TimeSpan вместо DateTimeOffset. TimeSpan можно добавить к DateTimes.
DateTimeOffset
class "представляет собой момент времени, обычно выражаемый как дата и время суток, относительно скоординированного универсального времени ( УНИВЕРСАЛЬНОЕ ГЛОБАЛЬНОЕ ВРЕМЯ)." Он содержит как значение DateTime
, так и смещение, поэтому, если вы хотите добавить смещение в DateTime
, вы хотите создать новый DateTimeOffset
с помощью конструктора, а затем использовать одну из функций AddX()
для DateTimeOffset
, чтобы изменить значение смещения.
var offset = new DateTimeOffset(DateTime.Now);
См. это сообщение в блоге для примеров того, как конвертировать из одного в другое, выполнять арифметику и т.д.
К сожалению, DateTimeOffset не то, что нормальный человек мог бы понять из его имени. Проще говоря, DateTime WITH offset (возможно, не только это, но достаточно близко). Имо это худший названный класс во всем .NET. Имя появилось прямо из SQL Server afaik. Вы можете обратиться к этому для получения дополнительной информации:
http://www.danrigsby.com/blog/index.php/2008/08/23/datetime-vs-datetimeoffset-in-net/
Вы можете достичь этого, передав соответствующие значения AddMinutes
или AddHours
вашего экземпляра DateTime
startDate.AddHours(2)
увеличит текущий объект DateTime на 2 часа (для уменьшения будет -2)
Или вы можете настроить объект Timespan, например
TimeSpan ts = new TimeSpan(2,0,0);
Теперь вы можете добавить это в свой объект DateTime
startDate= startDate+ ts;
Предполагая, что вам нужно добавить +2: 00 в DateTime
. Вы можете сделать,
DateTime dateTime = DateTime.Now.AddHours(2.0);