要从DateTimeOffset删除时区偏移吗?

问题描述 投票:8回答:1

此代码:

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更改了时区偏移量,这正是我想要的。这样做是否有问题?

此代码:DateTimeOffset testDateAndTime =新的DateTimeOffset(2008,5,1,8,8,6,32,新的TimeSpan(1,0,0)); //清洁时间和日期testDateAndTime = testDateAndTime.DateTime.Date; var ...
c# timezone datetimeoffset
1个回答
15
投票
© www.soinside.com 2019 - 2024. All rights reserved.