当前位置: 首页 > 面试题库 >

奇数在Joda DateTime中的结果为01.04.1893

岑熙云
2023-03-14
问题内容

我的时区是CET(柏林)。
在测试Joda的DateTime时,我注意到一些奇怪的事情:

new DateTime(1893, 4, 1, 0, 0, 0, 0);
=>  java.lang.IllegalArgumentException: Illegal instant due to time zone offset transition:

new DateTime(1893, 3, 31, 0, 0, 0, 0).toDate();
=>  Fri Mar 31 00:06:32 CET 1893

时区偏移6分32秒导致不存在时间?
我必须说这是非常出乎意料的,因为我没有指定任何时区信息,因此也没想到会遇到这种问题。
如果在1893年3月没有CET(柏林)-为什么不new DateTime(1893, 3, 31, 0, 0, 0, 0)选择与我指定的时间相匹配的时区(即0分0秒)?

我如何选择正确的DateTime时间?

-编辑-
问题似乎出在toDate()。在发布问题之前,我已将其删除。
Joda本身实际上运行良好:

new DateTime(1893, 3, 31, 0, 0, 0, 0);
=>  1893-01-01T00:00:00.000+00:53:28

只是到日期的转换会将偏移量的一部分移至分钟和秒。


问题答案:

如果您未指定时区,那么不幸的是Joda Time使用系统时区。是的,柏林真的 没有
改变
当时(和6分32秒)。因此,您指定的本地时间不存在。

您的意思是“为什么不选择与我指定的时间匹配的时区?” -时区会影响本地时间与UTC的映射方式。在您 隐式
指定的时区中(通过选择系统默认值),该时间不存在。没有UTC即时映射到该本地时间。有许多时区 可以 映射该本地时间-乔达怎么知道该选哪个?

我同意,使用系统默认时区对Joda来说是一个错误的举动(这是我们在Noda Time中确定的),但是其余所有行为都是可以的。(对于这种情况,Noda
Time有一个特殊的例外,可以将其与传递显然更糟的值区分开来,但是我们可以了。)

如果你不希望时区进入它 在所有的 ,那么你应该使用LocalDateTime来代替。



 类似资料:
  • 我使用的是mongodb(v2.6.7)和mongo(2.6.7)shell客户端。 我正在尝试使用insert和update命令返回的WriteResult对象。 根据mongodocs,如果出现错误,它将返回一个writeResult对象,其中包含writeError子文档。但我无法在shell或mongo的javascript文件中访问此子文档。 下面是我的问题的说明。 我插入一个对象,并获

  • 当我第一次开始构建加密过程时,我被告知使用AES256和PKCS7Padding。经过一番唠叨,我得到了一个服务器代码的C++示例。原来IV是256位,所以我不得不使用RijndaelEngine代替。此外,为了使其正常工作,我必须使用zerobytepadding。 下面是我的代码: 下面是我用来发送和接收消息的一个测试函数: 或者我在错误之前的最后一行看起来如下所示: 如果我将加密/解密设置为

  • 当试图从Hitbox API获取数据时,我得到了一个奇怪的结果。对于一个API的命令,这种情况每次都会发生,而对于另一个API的命令,这种情况只是有时发生。结果差不多是这样(这是我得到的最后一个结果): \U001F\B\0\0\0\0\0\U0003W8SμMU~S N T&N G6C$Z%9IGF[(\U0005\U000F(:6\U000F\B P C\U0015\N\U007F V\U00

  • 我正在使用Weka Gui-Explorer,我想根据类{男性,女性}对我的数据进行分类。我使用MultiBoostAB分类器,以REPTree分类器为基础。我正在尝试使用训练集(557个实例)评估我的分类器的准确性 然后是一个具有大约300个属性的测试集(200个实例)。准确率83,5% - 167从200个实例中正确分类,kappa统计量为0,67。我保存了这个模型,并用它来预测 其他未知数据

  • 我有一个程序可以读取两个文件(“incompleta.txt”和“completa.txt”),并比较两个文件中是否有相同的名称。其工作原理如下: 它将“completa.txt”中的所有名称存储在ArrayList中 问题是我的“lista.txt”看起来像这样:Image 第二条线完全是混乱和扭曲的。 我的Java代码:

  • 我使用Oracle11g(在Red Hat上)。我有一个带有XMLType列的简单常规表: 我使用Oracle SQL Developer(在Windows上): 很管用。我只有一个牢房。我可以双击并下载整个XML文件。 然后我试图以CLOB的形式得到结果: 很管用。我只有一个牢房。我可以双击并看到整个文本和复制它。但有个问题。当我把它复制到剪贴板时,我只得到前4000个字符。似乎在4000位置有