gpt4 book ai didi

c# - 将 DateTime.Now 转换为不同的时区

转载 作者:太空狗 更新时间:2023-10-30 00:26:18 26 4
gpt4 key购买 nike

此代码已经运行了很长时间,但当我尝试将 DateTime.Now 作为 outageEndDate 参数传递时,现在已损坏:

public Outage(DateTime outageStartDate, DateTime outageEndDate, Dictionary<string, string> weeklyHours, string province, string localProvince)
{
this.outageStartDate = outageStartDate;
this.outageEndDate = outageEndDate;
this.weeklyHours = weeklyHours;
this.province = province;
localTime = TimeZoneInfo.FindSystemTimeZoneById(timeZones[localProvince]);

if (outageStartDate < outageEndDate)
{
TimeZoneInfo remoteTime = TimeZoneInfo.FindSystemTimeZoneById(timeZones[province]);
outageStartDate = TimeZoneInfo.ConvertTime(outageStartDate, localTime, remoteTime);
outageEndDate = TimeZoneInfo.ConvertTime(outageEndDate, localTime, remoteTime);

我在最后一行收到的错误消息是 DateTime 参数 (outageEndDate) 上的 Kind 属性设置不正确。我用 Google 搜索并检查了 SO 的示例,但我并不真正理解错误消息。

如有任何建议,我们将不胜感激。

问候。

编辑 - 确切的错误信息是:

The conversion could not be completed because the supplied DateTime did not have the Kind
property set correctly. For example, when the Kind property is DateTimeKind.Local, the source
time zone must be TimeZoneInfo.Local. Parameter name: sourceTimeZone

编辑:outageEndDate.Kind = Utc

最佳答案

感谢您澄清您的问题。

如果 DateTime 实例 KindLocal,则 TimeZoneInfo.ConvertTime 将期望第二个参数是您计算机的本地时区。

如果 DateTime 实例 KindUtc,则 TimeZoneInfo.ConvertTime 将期望第二个参数是 Utc 时区。

您需要先将 outageEndDate 转换为正确的时区,以防 localProvice 时区与您计算机上的时区不匹配。

outageEndDate = TimeZoneInfo.ConvertTime(outageEndDate, localTime);

关于c# - 将 DateTime.Now 转换为不同的时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11872980/

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