在Java中解析日期的毫秒分数

在Java中解析日期的毫秒分数,java,parsing,date,milliseconds,Java,Parsing,Date,Milliseconds,我正在使用以下模式解析Java中的日期(从服务器获取):“yyyy-MM-dd'T'HH:MM:ss.SSS” 传入字符串可以是以下类型: 2015-01-01T00:00:00.561 2015-01-01T00:00:00.5 我的问题是关于分数的。我很难确定第二个字符串中的.5是5还是500ms。因为当我使用我的模式解析它时,我得到500ms。看起来不错,但需要再次检查是否有任何共同的契约来修剪服务器端的那些零。我不会问服务器是否返回了2015-01-01T00:00:00.500,但对

我正在使用以下模式解析Java中的日期(从服务器获取):
“yyyy-MM-dd'T'HH:MM:ss.SSS”

传入字符串可以是以下类型:

2015-01-01T00:00:00.561
2015-01-01T00:00:00.5
我的问题是关于分数的。我很难确定第二个字符串中的
.5
5
还是
500
ms。因为当我使用我的模式解析它时,我得到
500
ms。看起来不错,但需要再次检查是否有任何共同的契约来修剪服务器端的那些零。我不会问服务器是否返回了
2015-01-01T00:00:00.500
,但对于
.5
,我不确定服务器端是
5
还是
500
ms

更新:


我刚和服务器团队谈过,他们确认
.5
.500

@dana的观点很好:1.5是1.500 然而,要确保有一种简单的方法来验证。只要在日志文件中查找一些记录集,就可以很容易地看到序列以及这些序列中的毫秒进度。 我想应该是这样

2015-01-01T00:00:00.46
2015-01-01T00:00:00.5
2015-01-01T00:00:00.561
2015-01-01T00:00:00.57
2015-01-01T00:00:00.678
但不是按照你提供的顺序。 从这个例子中,你可以清楚地看到,毫秒的含义是一样的

很容易在一个日志文件中看到它。如果您有更多,那么它们可能来自不同的服务器,您无法比较时间。根据定义,不同的服务器有不同的时间。特别是毫秒。 即使日志文件来自同一个盒子,但来自不同的应用程序,从字面上比较时间仍然不是一个好主意。一个日志文件可能会被锁定几毫秒,因此您的时间会有所不同。您所能做的就是从一个源文件中进行关系比较(早期/后期)。所有其他情况都可能无效。

ISO 8601 该模式为标准定义的字符串格式

您的特定用法忽略了偏移量(末尾的加号/减号)。如果没有偏移,则该值为“本地时间”,意味着它指的是任何地方,例如“圣诞节从2015-12-25T00:00:00开始”

库和使用ISO 8601格式作为生成/解析字符串的默认格式

小数点 是的,点后面的数字实际上只是一个小数。这个点是小数点。像
0.5
这样的值与
0.500
相同,都表示半秒,即500毫秒


那么,
2015-01-01T12:34:56.7
2015-01-01T12:34:56.700

服务器是一个使用相同日期模式的Java程序吗?@KevinKrumwiede我不知道,这是我力所能及的。看看你是否能以
2015-01-01T00:00:00.0xx
的形式获取日期,其中xx是任意两位数字。如果您可以在任何测试用例中找到0作为填充,那么您将知道它是5毫秒还是500毫秒。也许这个点的行为与浮点数中的点类似?例如,
1.5
1.500
相同。感谢您的帮助+1.我刚和服务器团队谈过,他们确认
.5
.500