Java约会问题

时间:2011-04-07 15:24:37

标签: java datetime date

我想问一个问题。我有一个包含日期的列表,例如:

2011年1月7日星期五00:00:00 CET 2011年 Fri Jan 07 00:01:00 CET 2011
Fri Jan 07 00:03:00 CET 2011
Fri Jan 07 00:05:00 CET 2011年 Fri Jan 07 00:06:00 CET 2011

然后用户输入间隔分钟,如:2
我必须从列表中获取2分钟之间的每个日期 输出应该是这样的:

 
1.                    
Fri Jan 07 00:00:00 CET 2011    
Fri Jan 07 00:01:00 CET 2011 

2.   
Fri Jan 07 00:03:00 CET 2011  
Fri Jan 07 00:05:00 CET 2011   

3.
Fri Jan 07 00:06:00 CET 2011  

问题是,我不知道该怎么做。欢迎任何想法。 :)

3 个答案:

答案 0 :(得分:0)

根据您的评论修改: 按日期排序。从最低的日期开始,在间隔内添加任何日期。然后移动到不属于某个间隔的下一个最低日期,并重复直到该列表为空。

答案 1 :(得分:0)

将日期转换为时间戳,并按间隔除以它们(没有余数)。具有相同结果的所有日期都属于同一个区块。

/* Psydo Code */

int offset = firstTime.getTimeStamp() / intervallInMilliSec;
int max = lastTime.getTimeStamp() / intervallInMilliSec;
SortedSet<Date>[] result = new SortedSet<Date>[max - offset];
    for(int i = 0; i < max - offset] result[i] = new SortedSet<Date>();
for(Date time : fromFile) {
  result[(time.getTimeStamp() / intervallInMilliSec) - offset].add(time);
}

答案 2 :(得分:0)

我强烈建议您使用Joda Time库进行此类操作:

http://joda-time.sourceforge.net/

内置的Java类很难处理 - 你会不断地将事物转换为长时间,进行数学运算,然后转换回各种日期和数据。日历对象。 Joda负责所有这些。