java中日期怎么相减

package com.gjy.common;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class DateUtil {
/**
* 返回给定的日期到现在的天数
* @param oldDate
* @return
*/
public static int calculateDayBy2Date(Date olddate) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date now = new Date();
// 比较天数
System.out.println((now.getTime() - olddate.getTime())
/ (24 * 60 * 60 * 1000));

return (int) ((now.getTime() - olddate.getTime()) / (24 * 60 * 60 * 1000));
}
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
calendar.set(2015, 03, 01);
int res = calculateDayBy2Date(calendar.getTime());
System.out.println(res);
}
}
为什么得到的结果是-24,今天是2015-3-7,按道理应该得到的是6啊

呵呵,你这个错误犯得很好,因为偶曾经也犯过。

你去查查calendar的API,看看mouth是从几开始的,你写3进去,到底最终的日期是多少呢?

Calendar calendar = Calendar.getInstance();
calendar.set(2015, 3, 1);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(sdf.format(calendar.getTime()));

看看结果啊,哈哈。

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-03-07
因为月份与日期设定月份是从0开始03代表4月

java 两个日期相减的怎么做?
对已日期相减,最高效的做法就是将二者都转换成毫秒,相减之后再根据你的需求进行单位转换,比如你想显示相差的秒数,就除以1000,以此类推,翠花,上代码:\/* 随便选两个时间 *\/ String d1 = "2015-04-17"; String d2 = "2015-06-17"; \/* 先转成毫秒并求差 *\/ SimpleDateF...

java 中 日期怎么相加减
JAVA Calendar类提供了2个方法:add() 和 roll()。Calendar cal = Calendar.getInstance();add(f, delta) 将 delta 添加到 f 字段中。这等同于调用 set(f, get(f) + delta),roll(f, delta) 将 delta 添加到 f 字段中,但不更改更大的字段。这等同于调用 add(f, delta)如果要计算2个...

java 中 日期如何相加减???
SimpleDateFormat dfs = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");java.util.Date begin=dfs.parse("2004-01-02 11:30:24");java.util.Date end = dfs.parse("2004-03-26 13:31:40");long between=(end.getTime()-begin.getTime())\/1000;\/\/除以1000是为了转换成秒 long day1...

Java中使用什么方法可以把两个String类型的日期相减求出时间差啊?_百...
public static void main(String[] args) { \/\/通过字符串创建两个日期对象 Date firstDate = new Date(FIRST);Date secondDate = new Date(SECOND);\/\/得到两个日期对象的总毫秒数 long firstDateMilliSeconds = firstDate.getTime();long secondDateMilliSeconds = secondDate.getTime();\/\/得到两者...

java中 如何对时间类型进行加减???
Calendar date1 = new GregorianCalendar(2008,4,28);Calendar date2 = new GregorianCalendar(2008,4,29);这样可以得到它们的实例,Calendar 里有方法 Calendar.DATE 得到它们的日期 以及年月,进行比较相减,就可以了。

java中如何实现日期相减
求两个日期之间相隔的天数:Java代码示例:java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd");java.util.Date beginDate= format.parse("2007-12-24");java.util.Date endDate= format.parse("2007-12-25");long day=(date.getTime()-mydate.getTime())\/(...

java 两个时间相减
先转成Date 再获取毫秒数来减 java.text.SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");java.util.Calendar c = Calendar.getInstance();String date1 = "2014-10-10 00:00:00";String date2 = "2015-10-10 00:00:00";c.setTime(sdf.parse(date1));int y1 ...

java 如何将日期年份相减
import java.util.Date;public class Admin { private static Format f = new SimpleDateFormat("yyyy-MM-dd");public static void main(String... args) { Date thisYear = new Date();System.out.println(formatDate2YYYYMMDD(thisYear));Date lastYear = lastYear(thisYear);System.out....

java实现两个日期相减得到中间的年份和月份
public static void main(String[] args) { String startTime = "2012-07-01";String endTime = "2014-07-31";String[] arg1 = startTime.split("-");String[] arg2 = endTime.split("-");int year1 = Integer.valueOf(arg1[0]);int year2 = Integer.valueOf(arg2[0]);int ...

求java 的日期相减的代码
import java.util.*;public class TimeCal { final private static SimpleDateFormat dateformat = new SimpleDateFormat("yyyyMMdd");public static void main(String[] args) { Calendar calendar1 = Calendar.getInstance();Calendar calendar2 = Calendar.getInstance();calendar1.set(2009, 0, 1);...

相似回答