此代码:
DateTimeOffset testDateAndTime =
new DateTimeOffset(2008, 5, 1, 8, 6, 32, new TimeSpan(1, 0, 0));
//CLEAN TIME AND DATE
testDateAndTime = testDateAndTime.DateTime.Date;
var datesTableEntry = db.DatesTable.First(dt => dt.Id == someTestId);
datesTableEntry.test= testDateAndTime;
db.SaveChangesAsync();
...在我的数据库中产生此结果:2008-05-01 00:00:00.0000000 -04:00
我应该如何修改代码,以便将时区偏移量从-4:00
中的+00:00
更改为testDateAndTime
?
我也尝试过:
public Task<DateTimeOffset> SetTimeZoneOffsetToZero(DateTimeOffset dateTimeOffSetObj)
{
TimeSpan zeroOffsetTimeSpan = new TimeSpan(0, 0, 0, 0, 0);
return dateTimeOffSetObj.ToOffset(zeroOffsetTimeSpan);
}
...但是该代码没有任何作用。
我的最终目标是让日期没有时间或时区偏移。我not想要将时间转换为另一个时区。 (也就是说,我不想从00:00:00.0000000
时间中减去4个小时,并将设置的时间偏移量设置为+00:00
。我just要将偏移量设置为+00:00
。)
这是我在其他地方遇到过的另一种方法:
DateTimeOffset testDateAndTime =
new DateTimeOffset(2008, 5, 1, 8, 6, 32, new TimeSpan(1, 0, 0));
testDateAndTime = testDateAndTime.DateTime.Date; //Zero out time portion
testDateAndTime = DateTime.SpecifyKind(
testDateAndTime.Date, DateTimeKind.Utc); //"Zero out" offset portion
我确定SpecifyKind
会转换我的DateTimeOffset
。即,更改时间[时区偏移量。但是,我的测试表明此代码just更改了时区偏移量,这正是我想要的。这样做是否有问题?