社区
Java SE
帖子详情
又是关于日期的问题
lianyangshiyan
2009-07-23 10:40:16
就是有这样一个文件,它里面的日期是这样的(一年之中,没有跨年的日期)
8月5日
6月7日-9月10日
3月14日
8月1日-8月23日
......
要求将文件中的重复日期去掉,并讲日期顺序排列,并打印出来,计算出最早的日期和最晚的日期相差多少天?
...全文
142
6
打赏
收藏
又是关于日期的问题
就是有这样一个文件,它里面的日期是这样的(一年之中,没有跨年的日期) 8月5日 6月7日-9月10日 3月14日 8月1日-8月23日 ...... 要求将文件中的重复日期去掉,并讲日期顺序排列,并打印出来,计算出最早的日期和最晚的日期相差多少天?
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xingqiliudehuanghun
2009-07-23
打赏
举报
回复
简单,但要吃饭了,先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
【
日期
问题
专题】&【蓝桥杯备考训练】:
日期
差值、
日期
问题
、回文
日期
、特殊的回文
日期
、
日期
计算【已更新完成】
日期
问题
中的蓝桥杯真题以及CCF CSP真题:
日期
差值、
日期
问题
、回文
日期
、特殊的回文
日期
、
日期
计算
关于
日期
问题
的总结
日期
问题
不会很复杂,主要记住判别平闰年,和算今天是星期几的公式(公元1年1月1号是星期1)public static boolean isLeap(int year) { return (year%4==0&&year%100!=0)||(year%400==0); }package
日期
问题
; /*用于复习昨天打的in.nextLine().split("")以...
日期
问题
总结
例题:
日期
差值有两个
日期
,求两个
日期
之间的天数,如果两个
日期
是连续的我们规定他们之间的天数为两天。
日期
问题
代码首先对月份进行判断,如果月份没有错接着判断是否为闰年,如果是闰年的二月,则判断是否在29天外,如果不是闰年的二月,则判断是否在28天外如果是四、六、九、十一月,则判断是否在30天外,如果不是上面的月份,则是除去二月的月份,判断是否在31天外。当小Q使出浑身解数,终于赢得HR女神芳心的时候,却出现了一个意外情况,那就是白富美HR的妈妈并不同意他们交往,当听说小Q只是一个码农,特别是听说小Q曾经参加过资本主义国家发起的SM/ICPC比赛的时候,更是坚决反对!算不上“千年一遇”,顶多算“千年两遇”。
日期
类
问题
日期
类
问题
@(算法)
日期
类
问题
中最基本的
问题
——求两个
日期
间的天数差。解决这类区间
问题
有一个统一的思想——把原区间
问题
统一到起点确定的区间
问题
上去。
日期
类
问题
有一个特别需要注意的要点——闰年闰年的判断规则:当年数不能被100整除时若能被4整除,或者其能被400整除时也是闰年。用逻辑表达式为: Year%100!=0 &&am...
Java SE
62,620
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章