博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java计算日期和时间差
阅读量:6348 次
发布时间:2019-06-22

本文共 3248 字,大约阅读时间需要 10 分钟。

这篇文章将使用两个例子计算两个日期的时间差。

1.使用Java SDK。
2.使用Joda库。
1.使用Java SDK
 计算两个Date之间的时间差,基本思路为把Date转换为ms(微秒),然后计算两个微秒时间差。时间的兑换规则如下:

1s秒 = 1000ms毫秒 1min分种 = 60s秒 1hours小时 = 60min分钟 1day天 = 24hours小时
package com.qiyadeng.date;import java.text.SimpleDateFormat;import java.util.Date;public class DateDifferentExample {    public static void main(String[] args) {        String dateStart = "2013-02-19 09:29:58";        String dateStop = "2013-02-20 11:31:48";        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        Date d1 = null;        Date d2 = null;        try {            d1 = format.parse(dateStart);            d2 = format.parse(dateStop);            //毫秒ms            long diff = d2.getTime() - d1.getTime();            long diffSeconds = diff / 1000 % 60;            long diffMinutes = diff / (60 * 1000) % 60;            long diffHours = diff / (60 * 60 * 1000) % 24;            long diffDays = diff / (24 * 60 * 60 * 1000);            System.out.print("两个时间相差:");            System.out.print(diffDays + " 天, ");            System.out.print(diffHours + " 小时, ");            System.out.print(diffMinutes + " 分钟, ");            System.out.print(diffSeconds + " 秒.");        } catch (Exception e) {            e.printStackTrace();        }    }}

  

运行结果:

两个时间相差:1 天, 2 小时, 1 分钟, 50 秒.

2.Joda时间库

使用 joda-time-1.6.2 jar包  资源连接地址:http://www.java2s.com/Code/Jar/j/Downloadjodatime162jar.htm

package util;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import org.joda.time.DateTime;import org.joda.time.Days;import org.joda.time.Hours;import org.joda.time.Minutes;import org.joda.time.Seconds;public class TimeDiffUtil {		public Integer getTimeDifference(String time) {		SimpleDateFormat date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");		String endTime = time;		String nowDate = date.format(new Date());		Date now = null;		Date end = null ;		try {			now = date.parse(nowDate);			end = date.parse(endTime);		} catch (ParseException e) {			e.printStackTrace();		}		return Days.daysBetween(new DateTime(end), new DateTime(now)).getDays();	}		public static void main(String[] args) throws ParseException  {	  System.out.println(new TimeDiffUtil().getTimeDifference("2015-01-01 00:00:00"));		 	  /**以下内容被放在getTimeDifference()方法中*/
  /*String dateStart = "2013-02-19 09:29:58";          String dateStop = "2015-01-01 11:31:48";          SimpleDateFormat date = new SimpleDateFormat("yyyy-MM-dd");          dateStart = date.format(new Date());          Date d1 = null;          Date d2 = null;          try {              d1 = date.parse(dateStart);              d2 = date.parse(dateStop);              DateTime dt1 = new DateTime(d1);              DateTime dt2 = new DateTime(d2);              System.out.print("两个时间相差:");              System.out.print(-Days.daysBetween(dt1, dt2).getDays() + " 天, ");              System.out.print(Hours.hoursBetween(dt1, dt2).getHours() % 24 + " 小时, ");              System.out.print(Minutes.minutesBetween(dt1, dt2).getMinutes() % 60 + " 分钟, ");              System.out.print(Seconds.secondsBetween(dt1, dt2).getSeconds() % 60 + " 秒.");          } catch (Exception e) {              e.printStackTrace();          }*/	}}

  

运行结果:

两个时间相差:1 天, 2 小时, 1 分钟, 50 秒.

转载地址:http://vrpla.baihongyu.com/

你可能感兴趣的文章
paramiko安装及使用
查看>>
Java私塾:研磨设计模式 之 访问者模式(Visitor)
查看>>
我的友情链接
查看>>
《Python网络数据采集》读书笔记(六)
查看>>
Linux必学的60个命令
查看>>
iptables 学习笔记 (上)
查看>>
Windows Server 2012 R2 Active Directory(活动目录)实验一
查看>>
android viewpager 无限左右滑动
查看>>
linux下SSH远程连接服务慢解决方案
查看>>
利用mic visual studio 2010 编译器执行wincap获取网络适配器的代码
查看>>
HTML
查看>>
CENTOS7下编译安装PHP-5.4以及配置phpMyAdmin
查看>>
磁盘显示无法访问拒绝访问,里面的资料怎样找到
查看>>
Java之品优购课程讲义_day07(5)
查看>>
Java的新项目学成在线笔记-day3(八)
查看>>
路由简单的实验
查看>>
Centos6.4 xen编译部署
查看>>
好程序员web前端教程分享js reduce方法使用教程
查看>>
零基础学习大数据Hadoop需要什么准备?Hadoop如何发展起来的?
查看>>
前端程序员需要具备的几个软实力,你具备了吗
查看>>