java相减
1. 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);
2. JAVA中两个值相减
不应该用s1-s2,因为String类型不能直接相减,要用a-b.
3. java相减问题
肯定会出错,你应该把当前时间写在SQL语句里,然后用函数把字符串转化成日期,在与数据的时间进行相减这个样就可以了!因为不知道你用的是什么数据库,不同的数据库函数也是不太一样的!
我用的MySQL日期相减TO_DAYS(NOW()) - TO_DAYS(startdate)
TO_DAYS()就是把字符串转换成日期 NOW()是取系统当前时间,startdate是数据库的字段。相减之后得到的是天数!
4. java数组相减问题
public static void main(String[] args) {
//输入的部分你写了我就不管了
int[] a = {1,4,5,7,8,9};
int[] b = {0,9,7,1};
for (int i = 0; i < 6; i++) {
//a中的数是否b中也存在
boolean have = false;
for (int j = 0; j < 4; j++) {
if (a[i]==b[j]){
have = true;
break;
}
}
if (!have){
System.out.print(a[i]);
}
}
}
运行截图
5. java中如何进行减法运算
setText(""+number1-number2);
因为java是从左到右处理的,在减法运算前有""字符串处专理, java就会把之后的都属当做字符串处理.改成
setText(""+(number1-number2));
如果减法运算在前面,比如 number1-number2 + "".这样是可以的
6. java的加减乘除运算
使用并且一定要用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();
}
};
7. java 两个时间相减
先转成Date 再获取毫秒数来减
java.text.SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");
java.util.Calendarc=Calendar.getInstance();
Stringdate1="2014-10-1000:00:00";
Stringdate2="2015-10-1000:00:00";
c.setTime(sdf.parse(date1));
inty1=c.get(Calendar.YEAR);
intm1=c.get(Calendar.MONTH);
c.setTime(sdf.parse(date2));
inty2=c.get(Calendar.YEAR);
intm2=c.get(Calendar.MONTH);
inty=Math.abs(y2-y1);
intm=y*12+Math.abs(m1-m2);
longd1=sdf.parse(date1).getTime();
longd2=sdf.parse(date2).getTime();
intd=(int)(Math.abs(d2-d1)/(1000*60*60*24));
System.out.println("相差年:"+y);
System.out.println("相差月:"+m);
System.out.println("相差天:"+d);
8. 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类是非线程安全的,所以在高并发下需要加同步锁,否则会出现灵异事件。
9. java月份相减
java中Calendar类提供了月份计算方法的,直接通过Month方法进行计算得出月份差,之后算出年份的差乘以12,之后的和就是月份差。
public void monthSpace() throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String str1 = "2012-02-01";
String str2 = "2012-02-2";
Calendar bef = Calendar.getInstance();
Calendar aft = Calendar.getInstance();
bef.setTime(sdf.parse(str1));
aft.setTime(sdf.parse(str2));
int result = aft.get(Calendar.MONTH) - bef.get(Calendar.MONTH);
int month = (aft.get(Calendar.YEAR) - bef.get(Calendar.YEAR))*12;
System.out.println(month+result );
}
10. 如何用JAVA把两个时间相减
调试过的程序,可以直接运行`!!!!!!
import java.util.Date;
import com.ibm.icu.text.SimpleDateFormat;
public class mss {
public mss() {
}
public long fromDateStringToLong(String inVal) { //此方法计算时间毫秒
Date date = null; //定义时间类型
SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-mm-dd hh:ss");
try {
date = inputFormat.parse(inVal); //将字符型转换成日期型
} catch (Exception e) {
e.printStackTrace();
}
return date.getTime(); //返回毫秒数
}
private static String dqsj() { //此方法用于获得当前系统时间(格式类型2007-11-6 15:10:58)
Date date = new Date(); //实例化日期类型
String today = date.toLocaleString(); //获取当前时间
System.out.println("获得当前系统时间 "+today); //显示
return today; //返回当前时间
}
public static void main(String[] args) {
String dqsj = dqsj(); //获得String dqsj = dqsj(); //获得当前系统时间
mss df = new mss(); //实例化方法
long startT=df.fromDateStringToLong("2005-03-03 14:51:23"); //定义上机时间
long endT=df.fromDateStringToLong("2004-03-03 13:50:23"); //定义下机时间
long ss=(startT-endT)/(1000); //共计秒数
int MM = (int)ss/60; //共计分钟数
int hh=(int)ss/3600; //共计小时数
int dd=(int)hh/24; //共计天数
System.out.println("共"+dd+"天 准确时间是:"+hh+" 小时 "+MM+" 分钟"+ss+" 秒 共计:"+ss*1000+" 毫秒");
}
}
这是执行结果``
获得当前系统时间 2007-11-6 15:57:39
共366天 准确时间是:8785 小时 527100 分钟31626001 秒 共计:31626001000 毫秒