java如何检查给定的时间是否在时间限制之间
下面是交易清单,我需要每15分钟进行一次交易计数,00:01到00:15,00:16到00:30,00:31到00:45。。。23:45(直到一天结束),如果在该特定时间没有交易,则需要填充0.00
样本数据:
124385 20191029001650
124385 20191029002050
124385 20191029102050
124391 20191029135007
124391 20191029135507
124392 20191029144229
预期输出应为0.00,2,0.00,0.00,0.00 ....
我们需要发送数据,如00:15至00:30“2”交易已完成,以及10:16至10:30“1”交易
# 1 楼答案
定义一个带有两个成员字段的
event
类:一个Long
整数对象用于事务编号,另一个LocalDateTime for the date-time value (or
即时`如果您知道预期的时区或UTC偏移量)解析传入的数据
对于ID号,使用
Integer
类进行解析对于日期时间,定义格式模式
解析每个字符串
按每个
LocalDateTime
对对象进行排序。实现Comparable
或生成Comparator
对象。这两个问题在堆栈溢出中都被多次提及,所以请搜索以了解更多信息从第一个对象开始。以它的
LocalDateTime
对象为例。通过调用with
并传递LocalTime.MIN
来创建一个新的。没有区域或偏移,我们知道每天和每小时都是一个通用长度,60分钟,24小时所以循环,每次增加15分钟。使用^{} 以小时-分钟-秒为单位定义未附加到时间线的时间跨度
这会给你一个开始和停止的时间
LocalDateTime
对象调整为偏移量或时区,请为开始和停止提取Instant
。然后在将ThreeTen-Extra库添加到项目中之后,将它们作为^{Interval
类提供了方便的比较方法,例如contains
李>您自己的
LocalDateTimeRange
可能看起来像这个完全未经测试的源代码草稿:比较手上的物体,看它是否不小于起点和终点。这种半开放式的定义时间跨度的方法通常是最好的,即开始是包容性的,而结束是排他性的
继续循环,直到找到包含手头对象的日期时间的日期时间范围。找到后,将以下内容添加到
Map
Map < LocalDateTimeRange , < Integer > >
李>Map < LocalDateTimeRange , < List< Event > > >
,您可以将Event
对象添加到List
或Set
中李>要么将这样一个值添加到映射中,要么将映射的值保留为空,用于该
LocalDateRange
键循环到下一个对象
完成后,分析地图
提示:教育发布该数据的人员:
上面讨论的所有这些主题都已在堆栈溢出上多次讨论过。因此,搜索以了解更多信息。并在发布前彻底搜索堆栈溢出