今天与同事交谈时,我非常困惑,所以请原谅。我有这个:
[当我将其返回给我的同事时,我通过返回json的API来执行此操作,它在行上返回了内容
{
...
"dateTimeOffset": "2020-04-01T10:00:00+02:00"
...
}
我这样构建我的DateTimeOffset:
var utc = DateTime.UtcNow;
string time = "10:00:00";
string timezoneIdentifier = "Romance Standard Time";
var date = DateTime.Now.Date;
var zone = TimeZoneInfo.FindSystemTimeZoneById(timezoneIdentifier);
var timespanOffset = zone.GetUtcOffset(utc);
var baseDateTime = date + TimeSpan.Parse(time);
baseDateTime= DateTime.SpecifyKind(baseDateTime, DateTimeKind.Unspecified);
var dateTimeOffset = new DateTimeOffset(baseDateTime, timespanOffset);
[当他将其拉入时,他的部分将时间转换为“ 12:00:00”,即:它添加了时区,这确实使我受益,因为我很困惑,因为,他希望我将他发送给他“ 08:00:00 +2”,因此它可以正确显示给最终用户,但我拒绝了,因为我的理解是:时间部分为当地时间,而+2描述与UTC的偏移量,这不是相反的:时间部分是UTC,您必须添加偏移量才能获取本地时间。我在文档的任何地方都找不到它:https://docs.microsoft.com/en-us/dotnet/api/system.datetimeoffset?view=netcore-2.2除了
DateTimeOffset结构包括一个DateTime值,以及一个Offset属性,该属性定义当前DateTimeOffset实例的日期和时间与世界标准时间(UTC)之间的时差。因为它精确地定义了相对于UTC的日期和时间,所以DateTimeOffset结构不包括Kind成员,就像DateTime结构所做的那样]
但是那对我来说还不够好。我的大脑不会接受它。所以:1.是DateTimeOffset中的时间是给定区域的本地时间,还是2.是UTC时间,您必须添加/减去偏移量才能获得本地时间
我知道这应该是基本的东西,但是我们已经讨论了太多了,以至于我不知道该怎么想了。
希望有人可以提供帮助。
DateTimeOffset结构包括一个DateTime值,以及一个Offset属性,用于定义当前DateTimeOffset实例的日期和时间以及世界标准时间(世界标准时间)。由于它准确定义了相对于UTC的日期和时间,因此DateTimeOffset结构不包含Kind成员,因为DateTime结构确实
可以表示为DateTime + offset = UTC
所以:
2020-04-01T10:00:00 + 02:00 = 12:00:00 UTC