DateTimeOffset 到 DateTime 转换 - 数据丢失

2024-06-18

当我将 datetimeoffset 值转换为 datetime 值时,是否有可能丢失数据。 从MSDN文档中,提到从datetimeoffset到datetime的转换如下:

DateTime 属性最常用于执行 DateTimeOffset 到日期时间转换。但是,它返回一个 DateTime 值,其 种类属性未指定。这意味着任何有关 DateTimeOffset 值与 UTC 的关系因 使用 DateTime 属性时的转换。

要指示转换后的 DateTime 值是 UTC 时间,您可以检索 DateTimeOffset.UtcDateTime 属性的值。它与 DateTime 属性有两个不同之处:

它返回一个 DateTime 值,其 Kind 属性为 Utc。 如果 Offset 属性值不等于 TimeSpan.Zero,则会将时间转换为 UTC。

我看到以下将日期时间偏移量转换为日期时间的方法:

static DateTime ConvertFromDateTimeOffset(DateTimeOffset dateTime)
{
   if (dateTime.Offset.Equals(TimeSpan.Zero))
      return dateTime.UtcDateTime;
   else if (dateTime.Offset.Equals(TimeZoneInfo.Local.GetUtcOffset(dateTime.DateTime)))
      return DateTime.SpecifyKind(dateTime.DateTime, DateTimeKind.Local);
   else
      return dateTime.DateTime;   
}

现在在我们的系统中,我们通过上述方式将 datetimeoffset 转换为 datetime。稍后我们要将日期时间转换回日期时间偏移。

举个例子:

DateTime dt = ConvertFromDateTimeOffset(datetimeOffset);
DateTimeOffset dofsetnew = new DateTimeOffset(dt);

我的问题是在任何情况下 datetimeOffset 和 dofsetnew 是否不同?如果是这样,那么转换就会丢失数据。


它的书写方式 - 是的,只要输入 DateTimeOffset 处于 UTC 偏移量,即 0 和本地时区(最后一个“else”条件)以外的任何值。恕我直言,您最好始终使用 UtcDateTime,假设其中涉及的潜在时区转换是可以接受的。

另外,如果您当地的时区遵守 DST,那么每年在不明确的时间段都会出现损失,因为您不知道它代表哪一个。

如果您需要确保没有丢失,请不要转换为 DateTime 并保留 DateTimeOffset (sql server 类型“datetimeoffset”),或者如果必须,请将 UTC 偏移量保留为与它一起传递的单独值,这样您就可以然后可以使用 2 个值(DateTime 和 offset)重建 DateTimeOffset。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DateTimeOffset 到 DateTime 转换 - 数据丢失 的相关文章

随机推荐

  • 如何延迟 onClick 操作

    我正在尝试在 java 应用程序 android 中做一些事情 并且我需要一些东西来延迟 等待循环的秒数 我怎样才能延迟android功能 我尝试过使用 Thread sleep TimeUnit sleep 但它只会执行几秒钟的不负责任的
  • 将 Visual Studio 在线 Git 存储库集成到 Android Studio 1.0.2

    我正在使用 Visual Studio Online 进行开发过程 我想将我的 Android Studio 1 0 2 代码集成到其中 但是 据我所知 Android Studio 没有 TFS 插件 这就是为什么我想使用 Git 进行源
  • 常见的 Windows 编译器上有哪些 std::locale 名称可用?

    该标准对于什么构成有效的语言环境名称几乎没有提及 只有传递无效的区域设置名称才会导致std runtime error 哪些语言环境名称可用于常见的 Windows 编译器 例如 MSVC MinGW 和 ICC 好吧 C 和 C 语言环境
  • java.lang.RuntimeException:将结果 ResultInfo{who=null, request=1888, result=0, data=null} 传递给活动失败

    我的应用程序允许用户按下按钮 打开相机 他们可以拍照 照片会显示在ImageView 如果用户在相机打开时按后退或取消 我会强制关闭 无法将结果 ResultInfo who null request 1888 result 0 data
  • scipy.interpolate.griddata:剪切 z 值并获取其中的区域

    Regarding to this analogy to scipy interpolate griddata https stackoverflow com questions 18496783 analogy to scipy inte
  • 使用“Openxml writer”合并 Excel 中的单元格

    我想合并单元格是excel 通过使用 DOM 方法 我可以轻松做到这一点 但由于我的 Excel 文件太大 当我尝试获取工作表时 它会抛出内存不足异常 所以我必须使用SAX方法来读取excel文件 但我不知道如何用这种方法合并单元格 查了很
  • 删除字符串中的转义符,或者“我怎样才能让 \ 不碍事?”

    转义字符在 R 中会带来很多麻烦 前面的问题证明了这一点 更改列中的值 https stackoverflow com questions 10046357 change the values in a column 10046412 10
  • 给图像着色[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在尝试着色System Windows Controls Image 该图像包含透明区域 我只是想用颜色给非透明区域着色 例如 图
  • 自定义 zsh 在显示上一个命令退出代码时的提示

    Zsh 能够通过使用以下命令在提示中显示上一个命令的返回代码 退出代码 转义序列 不过我想得到以下提示 user host 当退出代码不为 0 且 user host 当退出代码为 0 时 如果我使用 单独它总是显示 即使 是 0 另外我想
  • 面试题:三个数组,O(N*N)

    假设我们有three长度数组N其中包含任意数量的类型long 然后我们得到一个数字M 相同类型 我们的任务是选择三个数字A B and C每个数组中的一个 换句话说A should从第一个数组中选取 B从第二个开始和C从第三个 所以总和A
  • 如何在 jquery.datatables 中显示复选框?

    我正在使用数据表 并且有以下代码来生成表 我想显示读取 写入 执行和管理值的复选框 如果该值等于 1 我希望选中该复选框 如果 0 个复选框未选中 JavaScript
  • 表达式的大 O 表示法

    如果我有一个需要 4n 2 7n 步才能完成的算法 它的 O 是多少 O 4n 2 O n 2 我知道 7n 被截断 但我不知道是否应该保留 n 2 系数 Thanks 您应该删除任何系数 因为问题实际上是在 按顺序 询问 它试图将其描述为
  • 在 SELECT IN 中使用 Oracle 参数时出现问题

    我在将一串数字插入sql查询时遇到问题 SELECT FROM tablename a WHERE a flokkurid IN 3857 3858 3863 3285 ORDER BY sjodategund rodun or SELEC
  • 如何减少 geom_text 重叠

    我的数据集包含超过 500 个对各个运动员在不同地点进行的比赛活动的观察结果 并在足球比赛期间进行记录 下面是我的数据集的示例 其中每个符号都指一个匹配活动 例如 KE踢有效 在 1 分钟时记录Defense Example data df
  • 就分页分段内存而言的程序寿命

    我对 x86 Linux 机器中的分段和分页过程有一个令人困惑的概念 如果有人能澄清从开始到结束所涉及的所有步骤 我们将很高兴 x86 使用分页分段内存技术进行内存管理 任何人都可以解释一下从可执行的 elf 格式文件从硬盘加载到主内存到它
  • MouseOver 不会在重叠的 div 上冒泡?

    使用 jQuery 2 1 Meyer 2 0 CSS重置脚本 http meyerweb com eric tools css reset 针对 IE9 和现代浏览器 我制作了两个重叠的 div 我在听mouseover and mous
  • 将逗号类分配给数据框中的多个列

    我有一个data frame有几个数字列我要 就像分配 逗号 类一样 这是需要的 因为我有一个中央数据框 我使用 Openxlsx 包过滤并保存到 Excel 并且需要comma类 以便数据在excel中显示为逗号格式 这是数据框 set
  • 毕加索在列表视图中向上滚动时不断重新加载图像,加载缓慢

    我一直在寻找答案 但无法从之前的讨论中找出我的问题 我有一个列表视图 它加载大约 50 个图像 以前大约是 100 个图像 但现在几乎不加载任何图像 通过适配器从 api 端点获取 JSON 内容 包括图像 URL 后 我的代码将其放入列表
  • Nusoap“SOAP-ENV:Xml 为空,未解析”消息

    我正在尝试使用 nusoap 实现一个简单的网络服务 服务器
  • DateTimeOffset 到 DateTime 转换 - 数据丢失

    当我将 datetimeoffset 值转换为 datetime 值时 是否有可能丢失数据 从MSDN文档中 提到从datetimeoffset到datetime的转换如下 DateTime 属性最常用于执行 DateTimeOffset