gpt4 book ai didi

c# - 更改 DateTimeOffset.Offset 属性?

转载 作者:行者123 更新时间:2023-11-30 19:24:29 25 4
gpt4 key购买 nike

我的最终目标是从客户端获取没有偏移的通用时间 - 只是 UTC 时间。我尝试这样做:

Javascript:(new Date()).toUTCString(),其输出记录:Thu, 17 Mar 2016 15:13:23 GMT,即正是我需要的。

然后我将它带到服务器并尝试将其转换为DateTimeOffset:

string dateTimeOffsetPattern = "ddd, dd MMM yyyy HH:mm:ss 'GMT'"; 

DateTimeOffset clientLoginTime = DateTimeOffset.ParseExact
(timeStringFromClient, dateTimeOffsetPattern, CultureInfo.InvariantCulture);

结果是:

3/17/2016 3:13:23 PM -04:00 

它以某种方式调整了我本地(东部)偏移量的时间。我不希望这种情况发生,我希望它只返回 UTC 时间,如下所示:

3/17/2016 3:13:23 PM +00:00

附言我只是问了另一个问题,我很抱歉,因为我觉得这应该很容易,但我不明白。这应该很简单,但看起来像 offset doesn't have a setter (除非我像往常一样完全缺少一些 C# 基础知识):

public TimeSpan Offset { get; }

最佳答案

有一个 overload of ParseExact where you can specify a DateTimeStyles. DateTimeValues 的值之一是 AssumeUniversal,它表示:

If format does not require that input contain an offset value, the returned DateTimeOffset object is given the UTC offset (+00:00).

这基本上意味着“不要假设它是本地的,假设它是通用的。”假设本地是默认值,这就是为什么您看到的结果是它正在适应本地。指定 AssumeUniversal 应该按照您想要的方式解析它。

DateTimeOffset clientLoginTime = DateTimeOffset.ParseExact
(timeStringFromClient, dateTimeOffsetPattern, CultureInfo.InvariantCulture,
DateTimeStyles.AssumeUniversal);

关于c# - 更改 DateTimeOffset.Offset 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36065417/

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