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

时间:2015-05-06 21:32:35

标签: 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

我的问题是毫秒分数。我无法确定第二个字符串中的.55还是500毫秒。因为当我使用我的模式解析它时,我得到500 ms。似乎没问题,但需要仔细检查是否有任何常见的合同来修剪服务器端的零。我不会问服务器是否返回2015-01-01T00:00:00.500,而是.5我不知道服务器端5500 ms是什么。

更新

我刚与服务器团队进行了交谈,他们确认.5.500

2 个答案:

答案 0 :(得分:1)

@dana有一个好处:1.5是1.500 但是要确保有简单的验证方法。只需查看日志文件中的一些记录集,您就可以轻松查看序列以及这些序列中的毫秒进度。 我认为那将是

var command = new DoSomethingCommand(obj);

command.execute();

但不是按照你提供的顺序。 从这个例子中你可以清楚地看到这个含义相同,毫秒无处不在。

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

答案 1 :(得分:0)

ISO 8601

该模式YYYY-MM-DDTHH:MM:SS.SSS±HH:MM是由ISO 8601标准定义的字符串格式。

您的特定用法省略了UTC的偏移量(最后的加/减)。没有偏移量,该值是“本地时间”,意味着它指的是任何地点,例如“圣诞节从2015-12-25T00:00:00开始”。

Joda-Time库和java.time package都使用ISO 8601格式作为生成/解析字符串的默认格式。

小数点

是的,点后面的数字确实只是一个小数。点是小数点。 0.5之类的值与0.500相同,均表示半秒,500毫秒。

因此,2015-01-01T12:34:56.72015-01-01T12:34:56.700相同。