Как добавить DateTimeOffset в DateTime в C #? - PullRequest
10 голосов
/ 24 мая 2011

У меня проблема, у меня есть DateTimeOffset и DateTime, и я хочу знать, как добавить смещение в DateTime?

DateTimeOffset, например, +02: 00

Ответы [ 5 ]

7 голосов
/ 24 мая 2011

Документация: http://msdn.microsoft.com/en-us/library/system.datetimeoffset.aspx говорит, что DateTimeOffset уже содержит и DateTime, и смещение.

Возможно, вы захотите использовать TimeSpan вместо DateTimeOffset.TimeSpan можно добавить в DateTimes.

4 голосов
/ 24 мая 2011

DateTimeOffset класс"представляет момент времени, обычно выражаемый в виде даты и времени дня, относительно всемирного координированного времени (UTC)".Он содержит как значение DateTime, так и смещение, поэтому, если вы хотите добавить смещение к DateTime, вам нужно создать новый DateTimeOffset с помощью конструктора, а затем использовать одну из функций AddX()для DateTimeOffset для изменения значения смещения.

var offset = new DateTimeOffset(DateTime.Now);

См. в этом посте , где приведены примеры того, как преобразовать из одного в другое, выполнить арифметику и т. д.

2 голосов
/ 24 мая 2011

К сожалению, DateTimeOffset - это не то, что нормальный человек понял бы по его имени. Проще говоря, это DateTime со смещением (может быть, не только это; но достаточно близко). По моему мнению, это класс с наихудшими именами во всем .NET. Название пришло прямо из SQL Server afaik. Вы можете сослаться на это для деталей:

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

0 голосов
/ 24 мая 2011

При условии, что вам нужно добавить +2: 00 к DateTime Вы можете сделать,

DateTime dateTime = DateTime.Now.AddHours(2.0);
0 голосов
/ 24 мая 2011

Вы можете достичь этого, передав соответствующие значения в AddMinutes или AddHours вашего DateTime экземпляра

startDate.AddHours(2) увеличит текущий объект DateTime на 2 часа ( уменьшит его до -2 )

Или вы можете инициализировать объект Timespan, например

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

Теперь вы можете добавить это к вашему объекту DateTime

startDate= startDate+ ts;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...