gpt4 book ai didi

c# - 日期时间偏移错误 : UTC offset of local dateTime does not match the offset argument

转载 作者:IT王子 更新时间:2023-10-29 04:48:31 54 4
gpt4 key购买 nike

我正在尝试创建一种将时间从一个时区转换为另一个时区的小方法。我认为这很简单,但是当我部署它时我得到了这个错误 The UTC Offset of the local dateTime parameter does not match the offset argument. 我猜这是因为服务器不在与用户相同的时区,这没有帮助,因为这将在世界各地使用。

public object ConvertDate(DateTime inputTime, string fromOffset, string toZone)
{
var fromTimeOffset = new TimeSpan(0, - int.Parse(fromOffset), 0);
var to = TimeZoneInfo.FindSystemTimeZoneById(toZone);
var offset = new DateTimeOffset(inputTime, fromTimeOffset);
var destination = TimeZoneInfo.ConvertTime(offset, to);
return destination.DateTime;
}

fromOffset 是一个数字,从用户时区转换为时间跨度,toZone 是我们要转换到的区域的名称。错误发生在这一行 var offset = new DateTimeOffset(inputTime, fromTimeOffset);

关于如何让它工作的任何想法?

最佳答案

参见 documentation为什么抛出异常:

ArgumentException: dateTime.Kind equals Local and offset does not equal the offset of the system's local time zone.

您收到的 DateTime 参数将其 Kind 属性设置为 Local。解决此问题的最简单方法是将 Kind 设置为 Unspecified

public object ConvertDate(DateTime inputTime, string fromOffset, string toZone)
{
// Ensure that the given date and time is not a specific kind.
inputTime = DateTime.SpecifyKind(inputTime, DateTimeKind.Unspecified);

var fromTimeOffset = new TimeSpan(0, - int.Parse(fromOffset), 0);
var to = TimeZoneInfo.FindSystemTimeZoneById(toZone);
var offset = new DateTimeOffset(inputTime, fromTimeOffset);
var destination = TimeZoneInfo.ConvertTime(offset, to);
return destination.DateTime;
}

关于c# - 日期时间偏移错误 : UTC offset of local dateTime does not match the offset argument,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36255821/

54 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com