gpt4 book ai didi

C#:DateTime.UtcNow 在分配给对象后更改为本地时间

转载 作者:太空宇宙 更新时间:2023-11-03 20:55:58 25 4
gpt4 key购买 nike

我的代码并没有什么特别之处。这基本上就是我所关心的。

节点.cs

public class Node {
public string Name { get; set; }
public DateTime LastCheckin { get; set; }
}

NodeUpdateReceiver.cs Get 由 EventHandler 触发。 ProcessNode

提供
public class NodeUpdateReceiver {

IDatabaseService databaseService { get; }

public NodeUpdateReceiver(IDatabaseService _dataService)
{
dataService = _dataService;
}

public async Task Process(Node node)
{
var newDate = DateTime.UtcNow
Console.WriteLine(newDate); // 5/23/2018 1:58:41 PM - correct UTC

node.LastCheckin = newDate;
Console.WriteLine(node.LastCheckin) // 5/23/2018 9:25:19 AM - local time... wtf??

dataService.SaveNodeAsync(node);
}
}

这到底是怎么发生的?分配这个将其转换为本地时间的 DateTime 我错过了什么?任何指针或资源将不胜感激。

最佳答案

node.LastCheckin 是 DateTime 类型

当你这样做时你会看到什么:

Console.WriteLine(node.LastCheckin);

DateTime
实例的本地表示如果那是在不同的机器上执行的,使用不同的时区,你会看到另一个结果(仍然偏移到 UTC)

要恢复 UTC,您需要使用 .ToUniversalTime()

Console.WriteLine(node.LastCheckin.ToUniversalTime());

关于C#:DateTime.UtcNow 在分配给对象后更改为本地时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50490348/

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