java时间加减

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java时间加减相关的知识,希望对你有一定的参考价值。

问题:
比如我现在是时间是:2014年1月10日18时20分
我要计算:2014年1月11日3时05分
这俩个时间的相差小时已经分钟该怎么计算,给点简单的例子啊,一定要简单易懂的,我是新手!
谢谢!

附上代码:


        Date date = new Date("2014/1/10 18:20");
        Date date2 = new Date("2014/1/11 3:5");
        long temp = date2.getTime() - date.getTime();    //相差毫秒数
        long hours = temp / 1000 / 3600;                //相差小时数
        long temp2 = temp % (1000 * 3600);
        long mins = temp2 / 1000 / 60;                    //相差分钟数
        System.out.println("date2 与 date 相差" + hours + "小时"+ mins + "分钟");



****************************************希望能够帮助到你!************************************************
如果我的回答对你有帮助,
别忘了点击我的回答下方【选为满意答案】按钮。
谢谢!

追问

如果我的时间是要用户在JComeBox上面选择的,那我是不是只需要把JComeBox选中的数字强制转换成int类型,定义 int a, int b, int c,int d,int e 然后在new Date("a/b/c/d/e");这样就好了? 需不需要强制转换成int型啊? 顺便问一下,new Date里面是什么类型的String Or int?

追答

应该是new Date("年/月/日 时/分/秒");的格式才对吧,其他格式暂时还没用过。小括号里是字符串,从截图和代码里都能看出来的。

追问

如果我要用2014年1月26日15时05去得到46分钟之前的时间我该怎么做呢?

参考技术A

1.用java.util.Calender来实现

Calendar calendar=Calendar.getInstance();
calendar.setTime(new Date());
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));//今天的日期
calendar.set(Calendar.DAY_OF_MONTH,calendar.get(Calendar.DAY_OF_MONTH)+1);//让日期加1
System.out.println(calendar.get(Calendar.DATE));//加1之后的日期Top 

2.用java.text.SimpleDateFormat和java.util.Date来实现

Date d=new Date();
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
System.out.println("今天的日期:"+df.format(d));
System.out.println("两天前的日期:" + df.format(new Date(d.getTime() - 2 * 24 * 60 * 60 * 1000)));
System.out.println("三天后的日期:" + df.format(new Date(d.getTime() + 3 * 24 * 60 * 60 * 1000)));

GregorianCalendar gc=new GregorianCalendar(); 
gc.setTime(new Date); 
gc.add(field,value); 
value为正则往后,为负则往前 
field取1加1年,取2加半年,取3加一季度,取4加一周 
取5加一天....

*java中对日期的加减操作
*gc.add(1,-1)表示年份减一.
*gc.add(2,-1)表示月份减一.
*gc.add(3.-1)表示周减一.
*gc.add(5,-1)表示天减一.
*以此类推应该可以精确的毫秒吧.没有再试.大家可以试试.
*GregorianCalendar类的add(int field,int amount)方法表示年月日加减.
*field参数表示年,月.日等.
*amount参数表示要加减的数量.

参考技术B public static void main(String[] args)
//初始化日期时间
Calendar cal1 = Calendar.getInstance();
cal1.set(2014, 1, 10, 18, 20);
Calendar cal2 = Calendar.getInstance();
cal2.set(2014, 1, 11, 3, 5);
//获取TimeInMillis 毫秒级别
long time1 = cal1.getTimeInMillis();
long time2 = cal2.getTimeInMillis();
//计算时间差
long lagTime = time2 - time1;
System.out.println("time1="+time1+"time2="+time2+"lagTime="+lagTime);
//计算相差的小时数
long laghour = lagTime/1000/60/60;
//计算相差的分钟数
long lagMinute = lagTime/1000/60-laghour*60;
System.out.println("laghour=["+laghour+"] lagMinute=["+lagMinute+"]");


运行输出为:
time1=1392027618682time2=1392059118682lagTime=31500000
laghour=[8] lagMinute=[45]
参考技术C 用SimpleDateFormat把这2个日期转成Date,
long date1=d1.getTime();
long date2=d2.getTime();
long days=(date1-date2)/(24*60*60*1000)
参考技术D Date a1=new Date("2014/1/10 18:20");Date a2=new Date("2014/1/11 3:20");long millis=a2.getTime()-a1.getTime();//计算他们之间时间差(毫秒)int hours=millis/1000/60/60;//计算相差多少小时
millis = millis - hours*60*60*1000;//除去小时数后剩余毫秒数int minutes=millis/1000/60;//计算相差多少分钟
millis = millis - minutes*60*60*1000;//除去分钟数后剩余毫秒数
int seconds = millis/1000;
millis = millis - seconds*1000;System.out.println(“它们之间相差”+hours+"小时"+minutes+"分钟"+seconds+"秒"+millis+"毫秒");

以上是关于java时间加减的主要内容,如果未能解决你的问题,请参考以下文章

java Long怎么进行加减?

java里面整型自加减

java简单加减乘除

java加减乘除是啥类

java时间加减

Java的加减乘除问题