gpt4 book ai didi

c# - 如何在给定 UTC 时间和日期的情况下创建 DateTime 对象?

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

我已经有 UTC 格式的日期和时间字符串。我需要使用这些字符串来创建 DateTime 对象。

这是我正在使用的代码。问题是时间被转换并且我在 datetime 对象上的 UTC 时间不再正确。我正在提供 UTC 值,因此它们不应再次转换。

string format = $"{dateFormat}_{timeFormat}";
string value = $"{dateValue}_{timeValue}";

var x = DateTimeOffset.ParseExact(value, format, CultureInfo.CurrentCulture).UtcDateTime;

其中 dateFormat = "ddMMyy"timeFormat = "HHmmss"dateValue = "191194"timeValue = "225446 ".

最佳答案

D Stanley 的答案当然有效,但比您需要的稍微复杂一些 - 如果您想要 DateTime 作为结果,您不需要使用 DateTimeOffset,因为 DateTime.ParseExact 也处理 DateTimeStyles.AssumeUniversal,尽管您需要指定 AdjustToUniversal 以便结果 为 UTC。 (否则它会自动调整到本地时区 - 并且没有帮助,IMO,但这是另一天的战斗。)

var x = DateTime.ParseExact(
value,
format,
CultureInfo.CurrentCulture,
DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal);

示例代码(向我揭示了需要 DateTimeStyles.AdjustToUniversal):

using System;
using System.Globalization;

class Test
{
static void Main(string[] args)
{
string text = "2015-06-10 20:52:13";
string format = "yyyy-MM-dd HH:mm:ss";
var dateTime = DateTime.ParseExact(
text,
format,
CultureInfo.InvariantCulture,
DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal);
Console.WriteLine(dateTime); // 10/06/2015 20:52:13 on my box
Console.WriteLine(dateTime.Kind); // Utc
}
}

顺便说一句,我会小心使用 CultureInfo.CurrentCulture - 请记住它会影响正在使用的日历系统以及格式字符串等。

(当然,作为旁注,我建议改用我的 Noda Time 库。在这种情况下,我可能建议使用 LocalTimeFormat 解析你的时间,你的日期使用LocalDateFormat,然后将结果相加得到 LocalDateTime,然后您可以使用 UTC 将其转换为 ZonedDateTime。或者您可以 当然,使用您现有的方法创建 ZonedDateTimePatternInstantPattern。)

关于c# - 如何在给定 UTC 时间和日期的情况下创建 DateTime 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32978322/

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