我正在存储来自亚马逊云的消息,并按排序映射中的时间戳排序它们。Java日期到毫秒
我解析从下面的代码云时间戳:
Date timestamp = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss.SSS'Z'", Locale.ENGLISH).parse(time);
,然后我在其中存储的键是日期排序的映射。 问题是日期只能精确到秒。 我可以在1秒内发送几条消息,所以我需要以毫秒级的精度对它们进行排序。有没有一个数据结构允许这个?
我正在存储来自亚马逊云的消息,并按排序映射中的时间戳排序它们。Java日期到毫秒
我解析从下面的代码云时间戳:
Date timestamp = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss.SSS'Z'", Locale.ENGLISH).parse(time);
,然后我在其中存储的键是日期排序的映射。 问题是日期只能精确到秒。 我可以在1秒内发送几条消息,所以我需要以毫秒级的精度对它们进行排序。有没有一个数据结构允许这个?
那么只要你的信号源的分辨率高于1秒。看起来像这个模式,但是你没有向我们展示任何输入的例子。
Date
只是自1970-01-01以来围绕long
毫秒的包装。所以你已经有了。 Date.getTime()
将以毫秒级的精度返回。
你为什么认为日期只有一秒精度?在毫秒级别比较Date.compareTo(Date anotherDate)
。 所以你的SortedMap应该可以正常工作,除非你正在做一些奇怪的事情。
我以为它不能够,因为我无法获得毫秒或设置它们。但你是对的。感谢那。这个错误来自于我以他们进入的速度消费信息的事实。这意味着时间没有被正确使用。修正它等待350毫秒,然后从队列中消耗。 –
我不确定您是否已经完成了这项工作,但是您可以创建自己的比较器并使用它。
作为一个便笺,根据您的应用程序设置,您可能需要注意如何使用SimpleDateFormat,但它有一些问题。
向我们展示'time'的值。 – adarshr
你的格式说'SSS'所以millis必须在那 –
如果'time'包含UTC时区('Z'),使用'yyyy-MM-dd'T'hh:mm:ss.SSSZ'而不是'yyyy-MM -dd'T'hh:MM:ss.SSS'Z''。 'Z'将*抓住*'Z'以及例如'+ 0100' –