我使用以下模式解析Java中的日期(从服务器获取):"yyyy-MM-dd'T'HH:mm:ss.SSS"
。
传入字符串可能属于以下类型:
2015-01-01T00:00:00.561
2015-01-01T00:00:00.5
我的问题是毫秒分数。我无法确定第二个字符串中的.5
是5
还是500
毫秒。因为当我使用我的模式解析它时,我得到500
ms。似乎没问题,但需要仔细检查是否有任何常见的合同来修剪服务器端的零。我不会问服务器是否返回2015-01-01T00:00:00.500
,而是.5
我不知道服务器端5
或500
ms是什么。
更新
我刚与服务器团队进行了交谈,他们确认.5
为.500
。
答案 0 :(得分:1)
@dana有一个好处:1.5是1.500 但是要确保有简单的验证方法。只需查看日志文件中的一些记录集,您就可以轻松查看序列以及这些序列中的毫秒进度。 我认为那将是
var command = new DoSomethingCommand(obj);
command.execute();
但不是按照你提供的顺序。 从这个例子中你可以清楚地看到这个含义相同,毫秒无处不在。
在一个日志文件中很容易看到它。如果你有更多,那么他们可能来自不同的服务器,你无法比较时间。根据定义,不同服务器的时间不同。特别是在几毫秒内。 即使日志文件来自同一个盒子但是不同的应用程序,从字面上比较时间仍然不是一个好主意。一个日志文件可以锁定几毫秒,因此您的时间会有所不同。您可以做的就是从一个来源获取文件中的关系比较(早/晚)。所有其他情况都可能无效。
答案 1 :(得分:0)
该模式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.7
与2015-01-01T12:34:56.700
相同。