比如说:输入年2008
输入月1
输入日26
求输入的日期与2008年1月1日间所差天数
输入月1
输入日26
求输入的日期与2008年1月1日间所差天数
解决方案 »
- for while循环的区别
- 一个菜鸟问题,望高手解答下~
- 急求Window 2K 上 IIS 5 + Tomcat-4.1.27 + JK-2.0.4 的整合技术
- No ResultSet was produced错误,使用的是executequery方法
- 没定义这个方法啊intValue(),编译为什么不报错啊?
- 如何在.txt文件的指定行数插入一行数据 ???
- HelpMe 怎么把JTextField中文本写到JList中~~
- 请教关于 string read 的问题
- 大家给推荐一本学习swing的书吧!
- 有点晕了,这儿为什么有俩"\\"
- AJAX prototype框架中
- 关于Generics的一道题目
用getTime();
返回 2个 日期的毫秒数
再相减 除以1000再除以60再除以60最后除以24
就可以了
getTime(); Date 类的方法
int n = calendar.get(Calendar.DAY_OF_YEAR);
System.out.println(n);Calendar.DAY_OF_YEAR,获得当前日期是这一年中的第几天,变相地计算与1月1日之间的天数差。如果不是与1月1日之间的差,可以采用2楼的方法。
日期近的结果OK
远的怎么出负值了?
getTime()后两个日期相减,是long型的吧,
比如n = (int)(d2.getTime()-d1.getTime())/86400000;
是不是这句哪有毛病啊?
long n = (d2.getTime()-d1.getTime())/86400000L;
/**
* 注意这里若你输入类似1月33日这样的时间时,是不会提示你输入错误的 后台字符串与日期转换的时候会自动将多余的天数往后面月份加
* 这正也是这个问题的解决进入点。
*/
final static String b_date = "2008-1-1";// 开始日期
final static String e_date = "2008-2-6";// 结束日期 private void getDaysFromCalendar(String date, String anotherDate) {
DateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd");
try { Date beginDate = dateformat.parse(date);
Date endDate = dateformat.parse(anotherDate);
Calendar c_begin = Calendar.getInstance();
Calendar c_end = Calendar.getInstance();
c_begin.setTime(beginDate);
c_end.setTime(endDate);
if (c_begin.after(c_end)) {
System.out.println("请确保时间的先后顺序!!");
System.exit(0);
}
if (c_begin.compareTo(c_end) == 0) {
System.out.println("你这个傻子,两个相同的日期还要我告诉相差几天?");
System.exit(0);
}
int j = 1;
for (int i = 1;; j++) {
c_begin.add(Calendar.DAY_OF_MONTH, i);
if (c_begin.compareTo(c_end) == 0) {
System.out.println(beginDate + "到" + endDate + "间相差" + j
+ "天");
break;
} else {
System.out.println("还没有找到...");
}
if (j == 1000) {
System.out.println("你比较的日期相隔超过1000天了");
break; }
} } catch (ParseException e) {
e.printStackTrace();
}
} public static void main(String[] args) { new getDays().getDaysFromCalendar(b_date, e_date);
System.exit(0);//可以不写,但是会出现小小的问题
}}
完全不要你考虑什么2月什么闰年!Calendar内部帮你解决了!