为什么DateTime.FromBinary在不同的计算机上返回不同的DateTime值

维克多·切拉鲁

我发现我正在处理的一个应用程序存在一个错误,该错误将日期时间错误地存储在我们的数据库中。我将其追溯到DateTime.FromBinary的操作方式之间存在一些不一致之处。

我将此代码用作测试用例:

var dateTime = DateTime.FromBinary(-8587689004854775808);
string toString = dateTime.ToString();

在Windows PC(.NET 4.5,控制台应用程序)和iOS应用程序(Xamarin.iOS 8.10.0.267)上,我得到以下结果:

5/27/2015 12:00:00 AM

但是,在我们的azure服务器上,它是在同一日期,但上午6:00出来的。

作为快速测试,我启动了DotNetFiddle:

https://dotnetfiddle.net/ziBwfA

果然有输出:

5/27/2015 6:00:00 AM

请注意,我还输出了“种类”属性,它以“本地”形式返回,因此我认为这不是本地vs.utc问题。

关于为什么会发生这种情况的任何想法?

安德鲁·惠特克

您可能正在DateTime一个时区中的一台机器上序列化该机器,然后在另一个时区中的一台机器上反序列化它。这在MSDN上有详细记录

在某些情况下,该方法DateTime返回FromBinaryDateTime提供给该ToBinary方法的原始值不同有关更多信息,请参见下一节“本地时间调整”。

然后继续解释:

如果DateTime通过该ToBinary方法将本地对象在一个时区中序列化,然后通过该方法在另一个时区中反序列化,FromBinary则由所得DateTime对象表示的本地时间将自动调整为第二时区。

这似乎很符合您所看到的行为。

您可能需要考虑将日期存储在UTC中(可能有偏移量,具体取决于您的应用程序)。有关存储日期和时间的最佳做法,请参见此答案

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么ServicePointManager.SecurityProtocol的默认值在不同的计算机上不同?

来自分类Dev

为什么wkhtmltopdf.exe在不同的Windows计算机上会产生不同的结果?

来自分类Dev

相同的p12证书,不同计算机上的信任链不同,为什么?

来自分类Dev

为什么这些Python Matplotlib图在不同的计算机上显示不同?

来自分类Dev

为什么我在使用jpanel的不同计算机上得到不同的结果?

来自分类Dev

为什么wkhtmltopdf.exe在不同的Windows计算机上会产生不同的结果?

来自分类Dev

为什么我的网站证书在不同的计算机上具有不同的“颁发者”?

来自分类Dev

为什么主机名-i在不同的计算机上给出不同的结果?

来自分类Dev

为什么Gnu在我的OSX计算机和Linux计算机上排序不同?

来自分类Dev

为什么两台计算机上的软件包安装顺序不同?

来自分类Dev

为什么datetime.datetime返回的结果与pd.to_datetime不同

来自分类Dev

为什么我的 DateTime 对象表现不同?

来自分类Dev

为什么在Windows和Linux计算机上使用file-io附加文件时会有不同的结果?

来自分类Dev

为什么Azure上的require.main.filename与我的本地Windows计算机上的不同?

来自分类Dev

为什么Maven在两台计算机上以不同的方式运行同一pom?

来自分类Dev

为什么Spreadsheet :: XLSX在不同的计算机上解析日期不一致?

来自分类Dev

为什么在本地计算机上以及在VPS上托管时,我的文件系统路径不同?

来自分类Dev

为什么ActiveRecord对象返回DateTime.now不同于DateTime.now

来自分类Dev

为什么在不同的计算机上,由同一自动化过程生成的pdf会有所不同?

来自分类Dev

为什么 Faker 不返回 Datetime 对象?

来自分类Dev

为什么来自一个站点的ASP.NET Identity登录名与同一台计算机上的不同网站共享?

来自分类Dev

Golang-为什么在类似计算机上进行编译会导致二进制文件大小明显不同?

来自分类Dev

为什么Joda DateTime给出的结果与Java Date不同?

来自分类Dev

为什么datetime.utcnow的行为与freezegun的预期不同?

来自分类Dev

为什么这两个 DateTime 实例不同?

来自分类Dev

脚本在不同的计算机上返回不同的结果

来自分类Dev

脚本在不同的计算机上返回不同的结果

来自分类Dev

为什么DateTime.TryParseExact()为这些输入字符串返回不同的时区?

来自分类Dev

为什么getsizeof(pandas.DataFrame)与计算机中的文件不同?

Related 相关文章

  1. 1

    为什么ServicePointManager.SecurityProtocol的默认值在不同的计算机上不同?

  2. 2

    为什么wkhtmltopdf.exe在不同的Windows计算机上会产生不同的结果?

  3. 3

    相同的p12证书,不同计算机上的信任链不同,为什么?

  4. 4

    为什么这些Python Matplotlib图在不同的计算机上显示不同?

  5. 5

    为什么我在使用jpanel的不同计算机上得到不同的结果?

  6. 6

    为什么wkhtmltopdf.exe在不同的Windows计算机上会产生不同的结果?

  7. 7

    为什么我的网站证书在不同的计算机上具有不同的“颁发者”?

  8. 8

    为什么主机名-i在不同的计算机上给出不同的结果?

  9. 9

    为什么Gnu在我的OSX计算机和Linux计算机上排序不同?

  10. 10

    为什么两台计算机上的软件包安装顺序不同?

  11. 11

    为什么datetime.datetime返回的结果与pd.to_datetime不同

  12. 12

    为什么我的 DateTime 对象表现不同?

  13. 13

    为什么在Windows和Linux计算机上使用file-io附加文件时会有不同的结果?

  14. 14

    为什么Azure上的require.main.filename与我的本地Windows计算机上的不同?

  15. 15

    为什么Maven在两台计算机上以不同的方式运行同一pom?

  16. 16

    为什么Spreadsheet :: XLSX在不同的计算机上解析日期不一致?

  17. 17

    为什么在本地计算机上以及在VPS上托管时,我的文件系统路径不同?

  18. 18

    为什么ActiveRecord对象返回DateTime.now不同于DateTime.now

  19. 19

    为什么在不同的计算机上,由同一自动化过程生成的pdf会有所不同?

  20. 20

    为什么 Faker 不返回 Datetime 对象?

  21. 21

    为什么来自一个站点的ASP.NET Identity登录名与同一台计算机上的不同网站共享?

  22. 22

    Golang-为什么在类似计算机上进行编译会导致二进制文件大小明显不同?

  23. 23

    为什么Joda DateTime给出的结果与Java Date不同?

  24. 24

    为什么datetime.utcnow的行为与freezegun的预期不同?

  25. 25

    为什么这两个 DateTime 实例不同?

  26. 26

    脚本在不同的计算机上返回不同的结果

  27. 27

    脚本在不同的计算机上返回不同的结果

  28. 28

    为什么DateTime.TryParseExact()为这些输入字符串返回不同的时区?

  29. 29

    为什么getsizeof(pandas.DataFrame)与计算机中的文件不同?

热门标签

归档