как добавить DateTimeOffset в DateTime в C#?

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

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

5 ответов


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

вероятно, вы хотите использовать TimeSpan вместо DateTimeOffset. TimeSpan могут быть добавлены в DateTimes.


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

var offset = new DateTimeOffset(DateTime.Now);

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


к сожалению, DateTimeOffset не то, что нормальный человек понял бы из его имени. Проще говоря, это DateTime со смещением (возможно, не совсем так, но достаточно близко). ИМО это худший названный класс в целом .Сеть. Имя пришло прямо из 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)

или вы можете intialize объект Timespan как

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

теперь вы можете добавить это в свой объект DateTime

startDate= startDate+ ts;

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

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