gpt4 book ai didi

c# - 如何在 C# (.NET) 中将 DateTimeKind.Unspecified 类型的 DateTime 转换为 DateTime.Kind.Utc

转载 作者:IT王子 更新时间:2023-10-29 04:21:14 26 4
gpt4 key购买 nike

我继承了 C# 代码,其中包含大量 DateTimes,其中 Kind 属性为 DateTimeKind.Unspecified。这些被送入 Datetime.ToUniversalTime() 返回一个 UTC 日期时间(在我的例子中它增加了 7 小时)。这就是 ToUniversalTime() 的工作原理;请参阅 MSDN。 问题是这些日期时间实际上已经是 UTC 时间了。它们是从 SQL Server Compact 4.0 数据库中提取出来的。它们以 UTC 存储在那里。我的主要问题是:

  1. 如何修改 DateTime 的 Kind 属性以使其为 UTC 而不是未指定的?我不想更改时间或日期。因此,例如,日期 2013 年 4 月 1 日上午 9:05,其 Kind 属性为“未指定”应该成为日期时间 2013 年 4 月 1 日,9:05 UTC。

如果我可以沉迷于后续问题,那将是:

  1. 从 Sql Server Compact 返回的值是否一定是“未指定”的?在 Sql Server Compact 内部,它们被存储为类型(日期时间,非空)。查看代码,它们似乎只是放入数据库中,但没有规定将它们标记为 UTC 或其他任何内容。有没有更好的方法来处理事情?有没有一种巧妙的方法可以确保日期时间作为 UTC 从 SQL Compact 中出来?

如果我可以提供更多详细信息,请告诉我。我是这个代码库的新手,仍在思考它,所以我无法完美地描述问题。

戴夫

最佳答案

你是否需要这样的东西:

var unspecified = new DateTime(2016, 12, 12, 10, 10, 10, DateTimeKind.Unspecified);
var specified = DateTime.SpecifyKind(unspecified, DateTimeKind.Utc);

关于 SpecifyKind() 方法来自 MSDN :

The SpecifyKind method creates a new DateTime object using the specified kind parameter and the original time value.

它将创建新对象、新种类和相同的时间值。您不能更改现有对象的种类,您需要创建具有相同值和不同种类的新对象。

关于这里的其他问题,支持的类型在 SQL Compact 中.这是关于 DateTimeOffset 的问题.看起来它在 Sql Compact 中还不被支持。

关于c# - 如何在 C# (.NET) 中将 DateTimeKind.Unspecified 类型的 DateTime 转换为 DateTime.Kind.Utc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40272749/

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