又是关于日期的问题

lianyangshiyan 2009-07-23 10:40:16
就是有这样一个文件,它里面的日期是这样的(一年之中,没有跨年的日期)
8月5日
6月7日-9月10日
3月14日
8月1日-8月23日
......
要求将文件中的重复日期去掉,并讲日期顺序排列,并打印出来,计算出最早的日期和最晚的日期相差多少天?
...全文
140 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
简单,但要吃饭了,先mark
hey2009 2009-07-23
  • 打赏
  • 举报
回复
import java.io.BufferedReader;
import java.io.FileReader;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Collections;
import java.util.Date;
import java.util.LinkedList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class TT {
private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
private static LinkedList<Date> dates = new LinkedList<Date>();

public static void main(String[] args) throws Exception {
//获取时间
BufferedReader bReader = new BufferedReader(new FileReader("c:\\tt.txt"));
String string = bReader.readLine().trim();
while(string!=null&&!"".equals(string)){
Pattern pattern = Pattern.compile("\\d{1,2}月\\d{1,2}日");
Matcher matcher = pattern.matcher(string);
while(matcher.find()){
String ss = matcher.group();
String month = ss.substring(0,ss.indexOf("月"));
String dd = ss.substring(ss.indexOf("月")+1,ss.indexOf("日"));
Date dt1 = sdf.parse("2008"+"-"+month+"-"+dd);
if(!dates.contains(dt1)){
dates.add(dt1);
}
}
string = bReader.readLine();
}
bReader.close();
//排序
Collections.sort(dates);
for(Date date: dates){
Calendar cal = Calendar.getInstance();
cal.setTime(date);
System.out.println((cal.get(Calendar.MONTH)+1)+"月"+cal.get(Calendar.DATE)+"日");
}
//输出最大相差天数
System.out.println(getDoubleMargin(dates.getLast(),dates.getFirst()));;
}
/**
* 获取相差天数
* @return
*/
public static double getDoubleMargin(Date date1, Date date2) {
double margin;
try {
long l = date1.getTime() - date2.getTime();
margin = (l / (24 * 60 * 60 * 1000.00));
return margin;
} catch (Exception e) {
return 0;
}
}
}
tt.txt中的数据:
8月5日
6月7日-9月10日
3月14日
8月1日-8月23日
8月24日-8月23日
8月1日

运行结果:

3月14日
6月7日
8月1日
8月5日
8月23日
8月24日
9月10日
180.0

lianyangshiyan 2009-07-23
  • 打赏
  • 举报
回复
不是的~~比如8月5号和8月1号-8月5号~~这两个8月5号是重复的
justinavril 2009-07-23
  • 打赏
  • 举报
回复
楼主,我不明白你的意思。比如8月5号,是不是和8月1号-8月23号重复啊?所以应该去掉?
lianyangshiyan 2009-07-23
  • 打赏
  • 举报
回复
Pattern和Matcher没用过~~~
lianyangshiyan 2009-07-23
  • 打赏
  • 举报
回复
3Q3Q

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧