当前位置:首页 » 编程语言 » java相减

java相减

发布时间: 2023-02-24 21:46:00

java 两个日期相减的怎么做

对已日期相减,最高效的做法就是将二者都转换成毫秒,相减之后再根据你的需求进行单位转换,比如你想显示相差的秒数,就除以1000,以此类推,翠花,上代码:

/*随便选两个时间*/
Stringd1="2015-04-17";
Stringd2="2015-06-17";

/*先转成毫秒并求差*/
SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd");
longm=sdf.parse(d2).getTime()-sdf.parse(d1).getTime();

/*根据你的需求进行单位转换*/
System.out.println("相差毫秒数:"+m);
System.out.println("相差天数:"+(m/(1000*60*60*24)));

要注意的地方:

时间格式可能有很多种,比如20150611或者2015年6月11日等等。所以你需要以对应的方式来初始化SimpleDateFormat对象。

例如20150611,就要写成:

SimpleDateFormatsdf=newSimpleDateFormat("yyyyMMdd");

SimpleDateFormat类是非线程安全的,所以在高并发下需要加同步锁,否则会出现灵异事件。

⑵ 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())/(24*60*60*1000);
System.out.println("相隔的天数="+day);

⑶ java的加减乘除运算

使用BigDecimal并且一定要用String来够造。
实现方法如下:

import java.math.BigDecimal;

/**

* 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精

* 确的浮点数运算,包括加减乘除和四舍五入。

*/

public class Arith{

//默认除法运算精度

private static final int DEF_DIV_SCALE = 10;

//这个类不能实例化

private Arith(){

}

/**

* 提供精确的加法运算。

* @param v1 被加数

* @param v2 加数

* @return 两个参数的和

*/

public static double add(double v1,double v2){

BigDecimal b1 = new BigDecimal(Double.toString(v1));

BigDecimal b2 = new BigDecimal(Double.toString(v2));

return b1.add(b2).doubleValue();

}

/**

* 提供精确的减法运算。

* @param v1 被减数

* @param v2 减数

* @return 两个参数的差

*/

public static double sub(double v1,double v2){

BigDecimal b1 = new BigDecimal(Double.toString(v1));

BigDecimal b2 = new BigDecimal(Double.toString(v2));

return b1.subtract(b2).doubleValue();

}

/**

* 提供精确的乘法运算。

* @param v1 被乘数

* @param v2 乘数

* @return 两个参数的积

*/

public static double mul(double v1,double v2){

BigDecimal b1 = new BigDecimal(Double.toString(v1));

BigDecimal b2 = new BigDecimal(Double.toString(v2));

return b1.multiply(b2).doubleValue();

}

/**

* 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到

* 小数点以后10位,以后的数字四舍五入。

* @param v1 被除数

* @param v2 除数

* @return 两个参数的商

*/

public static double div(double v1,double v2){

return div(v1,v2,DEF_DIV_SCALE);

}

/**

* 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指

* 定精度,以后的数字四舍五入。

* @param v1 被除数

* @param v2 除数

* @param scale 表示表示需要精确到小数点以后几位。

* @return 两个参数的商

*/

public static double div(double v1,double v2,int scale){

if(scale<0){

throw new IllegalArgumentException(

"The scale must be a positive integer or zero");

}

BigDecimal b1 = new BigDecimal(Double.toString(v1));

BigDecimal b2 = new BigDecimal(Double.toString(v2));

return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();

}

/**

* 提供精确的小数位四舍五入处理。

* @param v 需要四舍五入的数字

* @param scale 小数点后保留几位

* @return 四舍五入后的结果

*/

public static double round(double v,int scale){

if(scale<0){

throw new IllegalArgumentException(

"The scale must be a positive integer or zero");

}

BigDecimal b = new BigDecimal(Double.toString(v));

BigDecimal one = new BigDecimal("1");

return b.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue();

}

};

⑷ java实现两个时间相减得到年月

大概判断了一下,比较粗糙,仅供参考。
privatestaticvoidfunction17()throwsException{
Scannersc=newScanner(System.in);
SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd");
System.out.println("请输入起始时间");
Datedate1=sdf.parse(sc.next());
System.out.println("请输入截止时间");
Datedate2=sdf.parse(sc.next());
longtime1=date1.getTime();
longtime2=date2.getTime();
longtime=(time2-time1)/1000;
longyear=time/(24*3600*365);
longmonth=time%(24*3600*365)/(24*3600*30);
if(year>0){
System.out.println(year+"年"+month+"月");
}else{
System.out.println(month+"月");
}
}

热点内容
有渔编程下载 发布:2024-11-07 23:56:49 浏览:714
汉字在计算机内部存储 发布:2024-11-07 23:55:20 浏览:714
java启动jar 发布:2024-11-07 23:49:19 浏览:607
java方法的参数传递参数 发布:2024-11-07 23:37:12 浏览:445
安卓手机为什么一直停在开机画面 发布:2024-11-07 23:36:16 浏览:650
java是一种面向对象的语言 发布:2024-11-07 23:21:53 浏览:981
eclipse无法查看源码 发布:2024-11-07 23:16:28 浏览:589
mysql的sql语句删除in 发布:2024-11-07 22:52:15 浏览:234
文件传输ftp过程 发布:2024-11-07 22:52:06 浏览:111
网易云音乐文件夹名 发布:2024-11-07 22:39:23 浏览:210