精华内容
下载资源
问答
  • java 计算时间差

    2012-09-04 22:32:38
    多种方法实现时间差计算,在此分享,共大家交流学习
  • java计算时间精确到

    千次阅读 2019-03-21 15:13:05
    /** ... * @param firstLoginTime 最小的时间 * @param nowTime传递最大的时间 * @return */ public static JSONObject getDistanceTime(String firstLoginTime, String nowTime) { JSONOb...

    /**
         * 
         * @param firstLoginTime 最小的时间
         * @param nowTime传递最大的时间
         * @return
         */

        public static JSONObject getDistanceTime(String firstLoginTime, String nowTime) {
            JSONObject dataMap = new JSONObject();
            DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date d1;
            try {
                d1 = df.parse(nowTime);
                Date d2 = df.parse(firstLoginTime);// 用户初次登录时间
                long diff = d1.getTime() - d2.getTime(); 当前的时间减去我初次登陆的时间如果大于等于2小时
                long seconds = diff / (1000); // 共计秒数
                long days = diff / (1000 * 60 * 60 * 24);
                long hours = (diff - days * (1000 * 60 * 60 * 24)) / (1000 * 60 * 60);
                long minutes = (diff - days * (1000 * 60 * 60 * 24) - hours * (1000 * 60 * 60)) / (1000 * 60);
                dataMap.put("hours", hours);
                dataMap.put("minutes", minutes);
                dataMap.put("seconds", seconds);
                dataMap.put("days", days);

                return dataMap;
            } catch (ParseException e) {
            } // 当前时间
            return dataMap;

        }


        public static void main(String[] args) {
            String aa = "2019-03-03 12:30:00";
            String bb = "2019-03-03 12:32:00";
            JSONObject json = getDistanceTime(aa, bb);
            String sec = json.getString("seconds");
            System.out.println(sec);
        }
     

    展开全文
  • 版权声明:以下代码均由小任一...import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; public class Time { public void beginEndtime(){ //开始...

    版权声明:以下代码均由小任一人码成,转载请注明出处。

    源码

    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Scanner;
    
    public class Time {
    public void beginEndtime(){
        //开始时间
        //提示用户输入
        Scanner sc=new Scanner(System.in);
        System.out.print("请输入开始时间(例2018-01-01 12:11:11):");
        String a=sc.nextLine();
        Scanner sc1=new Scanner(System.in);
        System.out.print("请输入结束时间(例2018-01-01 12:22:11):");
        String b=sc1.nextLine();
        //将用户输入的日期字符串转换为date类
        DateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date begin=null;
        Date end=null;
        try {
            begin=sdf.parse(a);
            end=sdf.parse(b);
            //计算时间差
            long diff = end.getTime() - begin.getTime();
            //计算天数
            long days = diff / (1000 * 60 * 60 * 24);
            //计算小时
            long hours = (diff % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60);
            //计算分钟
            long minutes = (diff % (1000 * 60 * 60)) / (1000 * 60);
            //计算秒
            long seconds = (diff % (1000 * 60)) / 1000;
            //输出
            System.out.println("你输入的日期时间差:"+days+"天"+hours+"小时"+minutes+"分"+seconds+"秒");
        } catch (Exception e) {
            // TODO: handle exception
            System.out.println("你输入的日期格式不对,请重新输入!");
            beginEndtime();
        }
    }
    public static void main(String[] args) {
        Time t=new Time();
        t.beginEndtime();
    }
    
    }
    

    代码运行图

    java计算自定义时间日期差,可精确到秒

    源码解析

    首先提示用户输入,用两个变量存储用户输入的字符串日期,定义一个DateFormat对象DateFormat sdf=new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);用parse方法将用户输入的时间字符串转换为date类型,然后用结束时间减掉开始时间,可以得到两个日期之间的毫秒差,接下来就是用公式将毫秒转换成天、小时、分钟、秒这些常用单位,最后输出时间差即可(最近越来越不想写解析,感觉直接看代码好,我以后只写重要的点)。

    重要的坑

    在写这个源码的时候我被一个点坑了,几乎浪费了一个小时,那就是每次用结束时间减掉开始时间,系统总会报错,如下图所示。
    java计算自定义时间日期差,可精确到秒
    报错的大概意思是说时间格式错误,但是输入的并没有错,跟定义的yyyy-MM-dd HH:mm:ss一模一样,根据我一个小时的不断尝试,慢慢的缩短了错误的范围,似乎是死在天数这里了,天数后面有什么呢?空格!没错,代码运行到空格这里卡住了,格式不正确,那就说明输入的空格消失了!这很奇怪。按理来说输入的字符就算是空格也不应该消失,除非是输入的方法自己帮我消除了空格!
    因为是string类型,所以用next()方法接受用户输入的值是完全可以的,这就导致了Myeclipse给我报错报在了时间相减的地方,导致我走了不少弯路。原来next()方法一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉(囧),既然找到了错误点那就好办了,把next()方法换成nextLine()方法,nextLine()方法的结束符只是Enter键,即nextLine()方法返回的是Enter键之前的所有字符,它是可以得到带空格的字符串的。
    原文链接:https://www.xiaorenjc.net/Java/javadatecha.html

    展开全文
  • Java计算时间差、日期总结

    万次阅读 多人点赞 2018-03-13 18:59:00
    Java计算时间差、日期总结 最近工作中遇到需要计算时间,搜索了几种计算时间的方法,这里总结一下 1、java 7中的日历类Calendar Calendar类使用其静态的getInstance()方法获取一个日历实例,该实例为当前...

    Java计算时间差、日期差总结

    最近工作中遇到需要计算时间差,搜索了几种计算时间差的方法,这里总结一下

    1、java 7中的日历类Calendar

    Calendar类使用其静态的getInstance()方法获取一个日历实例,该实例为当前的时间;如果想改变时间,可以通过其setTime方法传入一个Date对象,即可获得Date对象所表示时间的Calendar对象

    /**
     *使用Calendar对象计算时间差,可以按照需求定制自己的计算逻辑
     * @param strDate
     * @throws ParseException
     */
    public static void calculateTimeDifferenceByCalendar(String strDate) throws ParseException {
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd");
        Date date = formatter.parse(strDate);
    
        Calendar c1 = Calendar.getInstance();   //当前日期
        Calendar c2 = Calendar.getInstance();
        c2.setTime(date);   //设置为另一个时间
    
        int year = c1.get(Calendar.YEAR);
        int oldYear = c2.get(Calendar.YEAR);
    
        //这里只是简单的对两个年份数字进行相减,而没有考虑月份的情况
        System.out.println("传入的日期与今年的年份差为:" + (year - oldYear));
    }

    输出为:

    传入的日期与今年的年份差为:12

    2、java 8中的周期类Period

    通过调用Period类的静态方法between,传入两个待比较的LocalDate对象today与oldDate,得到的Period的对象p中就包含了today与oldDate两个日期相差的年、月、日信息,可以通过p.getYears()等方法取出

    /**
     * 使用java 8的Period的对象计算两个LocalDate对象的时间差,严格按照年、月、日计算,如:2018-03-12 与 2014-05-23 相差 3 年 9 个月 17 天
     * @param year
     * @param month
     * @param dayOfMonth
     */
    public static void calculateTimeDifferenceByPeriod(int year, Month month, int dayOfMonth) {
        LocalDate today = LocalDate.now();
        System.out.println("Today:" + today);
        LocalDate oldDate = LocalDate.of(year, month, dayOfMonth);
        System.out.println("OldDate:" + oldDate);
    
        Period p = Period.between(oldDate, today);
        System.out.printf("目标日期距离今天的时间差:%d 年 %d 个月 %d 天\n", p.getYears(), p.getMonths(), p.getDays());
    }

    输出为:

    Today:2018-03-13
    OldDate:2014-05-23
    目标日期距离今天的时间差:3 年 9 个月 18 天

    3、java 8中的Duration类

    Duration与Period相对应,Period用于处理日期,而Duration计算时间差还可以处理具体的时间,也是通过调用其静态的between方法,该方法的签名是between(Temporal startInclusive, Temporal endExclusive),因此可以传入两个Instant的实例(Instant实现了Temporal接口),并可以以毫秒(toMillis)、秒(getSeconds)等多种形式表示得到的时间差

    public static void calculateTimeDifferenceByDuration() {
        Instant inst1 = Instant.now();  //当前的时间
        System.out.println("Inst1:" + inst1);
        Instant inst2 = inst1.plus(Duration.ofSeconds(10));     //当前时间+10秒后的时间
        System.out.println("Inst2:" + inst2);
        Instant inst3 = inst1.plus(Duration.ofDays(125));       //当前时间+125天后的时间
        System.out.println("inst3:" + inst3);
    
        System.out.println("以毫秒计的时间差:" + Duration.between(inst1, inst2).toMillis());
    
        System.out.println("以秒计的时间差:" + Duration.between(inst1, inst3).getSeconds());
    }

    输出为:

    Inst1:2018-03-13T09:06:00.691Z
    Inst2:2018-03-13T09:06:10.691Z
    inst3:2018-07-16T09:06:00.691Z
    以毫秒计的时间差:10000
    以秒计的时间差:10800000

    4、java 8中的ChronoUnit类

    ChronoUnit的between方法签名为,between(Temporal temporal1Inclusive, Temporal temporal2Exclusive),需要注意的是,如果要以不同的单位展示时间差,between入参中的时间对象必须包含有对应的时间信息,否则会抛出java.time.temporal.UnsupportedTemporalTypeException: Unsupported unit XXX的异常

    /**
     * 使用java 8的ChronoUnit,ChronoUnit可以以多种单位(基本涵盖了所有的,看源码发现竟然还有“FOREVER”这种单位。。)表示两个时间的时间差
     */
    public static void calculateTimeDifferenceByChronoUnit() {
        LocalDate startDate = LocalDate.of(2003, Month.MAY, 9);
        System.out.println("开始时间:" + startDate);
    
        LocalDate endDate = LocalDate.of(2015, Month.JANUARY, 26);
        System.out.println("结束时间:" + endDate);
    
        long daysDiff = ChronoUnit.DAYS.between(startDate, endDate);
        System.out.println("两个时间之间的天数差为:" + daysDiff);
    //  long hoursDiff = ChronoUnit.HOURS.between(startDate, endDate);  //这句会抛出异常,因为LocalDate表示的时间中不包含时分秒等信息
    }

    输出为:

    开始时间:2003-05-09
    结束时间:2015-01-26
    两个时间之间的天数差为:4280

    5、传统的SimpleDateFormat类

    用SimpleDateFormat计算时间差的方法,网上找了一份,自己跑了一遍,可以使用,贴在下面

    /**
    * 用SimpleDateFormat计算时间差
    * @throws ParseException 
    */
    public static void calculateTimeDifferenceBySimpleDateFormat() throws ParseException {
        SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm");
        /*天数差*/
        Date fromDate1 = simpleFormat.parse("2018-03-01 12:00");  
        Date toDate1 = simpleFormat.parse("2018-03-12 12:00");  
        long from1 = fromDate1.getTime();  
        long to1 = toDate1.getTime();  
        int days = (int) ((to1 - from1) / (1000 * 60 * 60 * 24));  
        System.out.println("两个时间之间的天数差为:" + days);
    
        /*小时差*/
        Date fromDate2 = simpleFormat.parse("2018-03-01 12:00");  
        Date toDate2 = simpleFormat.parse("2018-03-12 12:00");  
        long from2 = fromDate2.getTime();  
        long to2 = toDate2.getTime();  
        int hours = (int) ((to2 - from2) / (1000 * 60 * 60));
        System.out.println("两个时间之间的小时差为:" + hours);
    
        /*分钟差*/
        Date fromDate3 = simpleFormat.parse("2018-03-01 12:00");  
        Date toDate3 = simpleFormat.parse("2018-03-12 12:00");  
        long from3 = fromDate3.getTime();  
        long to3 = toDate3.getTime();  
        int minutes = (int) ((to3 - from3) / (1000 * 60));  
        System.out.println("两个时间之间的分钟差为:" + minutes);
    }

    输出为:

    两个时间之间的天数差为:11
    两个时间之间的小时差为:264
    两个时间之间的分钟差为:15840

    总结

    传统的SimpleDateFormat和Java 7中的Calendar在使用的时候需要自己写一个计算时间差的逻辑,比较麻烦,但是却比较灵活,方便根据自己具体的需求来定制(比如,我想两个日期的天数差15天就算满一个月,不满15天不算一个月,如2018-01-04到2018-02-20,算2个月的时间差);而Java 8中的几个计算时间差的类更加方便、精确,可以以不同的单位表示得到的时间差,但要注意几个类所包含的时间信息的区别:

    System.out.println(LocalDate.now());        //只包含日期信息
    System.out.println(LocalTime.now());        //只包含时间信息
    System.out.println(LocalDateTime.now());        //包含日期、时间信息

    输出为:

    2018-03-13
    17:13:26.134
    2018-03-13T17:13:26.135

    以上总结的几个方法只是个例子,具体使用的时候可能需要传入一个或者两个时间进行比较,可能会涉及到这些时间对象的相互转换,Instant、Date、LocalDate等等。。。我就不列举了。。。
    另外在使用SimpleDateFormat对String类型的日期进行parse的时候,如果传入的日期为:2017-08-60,这种错误的日期,Java默认会按照日期的信息对其进行转换,formatter.parse("2017-08-60");,得到的日期为2017-09-29,而如果不想进行这种转换,而直接将其判定为输入错误,则可以设置formatter.setLenient(false);,这时就会抛出java.text.ParseException异常了

    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
    formatter.setLenient(false);
    try {
        Date date = formatter.parse("2017-08-60");  //抛出转换异常
        System.out.println(date);
    } catch (ParseException e) {
        e.printStackTrace();
    }
    展开全文
  • java计算时间差小程序

    2013-08-01 08:49:47
    很简单的java计算当前日期至指定日期的时间差的程序
  • //测试主方法 public static void main(String[] args) { ... //当前系统时间 Date firstTime = df.parse("2004-01-02 11:30:24"); //查询的数据时间 String str=getTime(currentTime ,firstTime );
    //测试主方法
     public static void main(String[] args) {
             Date currentTime = df.parse("2004-03-26 13:31:40");   //当前系统时间   
             Date firstTime = df.parse("2004-01-02 11:30:24");     //查询的数据时间
             String str=getTime(currentTime ,firstTime );
             System.out.println("获取的年月日时分秒时间差为:"+str);
      }
      
      //获取时间差方法    
      public static String getTime(Date currentTime,Date firstTime){
              long diff = currentTime.getTime() - firstTime.getTime();//这样得到的差值是微秒级别
              Calendar  currentTimes =dataToCalendar(currentTime);//当前系统时间转Calendar类型
              Calendar  firstTimes =dataToCalendar(firstTime);//查询的数据时间转Calendar类型
              int year = currentTimes.get(Calendar.YEAR) - firstTimes.get(Calendar.YEAR);//获取年
              int month = currentTimes.get(Calendar.MONTH) - firstTimes.get(Calendar.MONTH);
              int day = currentTimes.get(Calendar.DAY_OF_MONTH) - firstTimes.get(Calendar.DAY_OF_MONTH); 
              if (day < 0) {
                 month -= 1;
                 currentTimes.add(Calendar.MONTH, -1);
                 day = day + currentTimes.getActualMaximum(Calendar.DAY_OF_MONTH);//获取日
              }
              if (month < 0) {
                 month = (month + 12) % 12;//获取月
                 year--;
              }      
              long days = diff / (1000 * 60 * 60 * 24);           
              long hours = (diff-days*(1000 * 60 * 60 * 24))/(1000* 60 * 60); //获取时 
              long minutes = (diff-days*(1000 * 60 * 60 * 24)-hours*(1000* 60 * 60))/(1000* 60);  //获取分钟
              long s=(diff/1000-days*24*60*60-hours*60*60-minutes*60);//获取秒
              String CountTime=""+"year"+"年"+month+"月"+day+"天"+hours+"小时"+minutes+"分"+s+"秒";
              return CountTime;
        }  
        
        //Date类型转Calendar类型
        public static Calendar dataToCalendar(Date date) {
              Calendar calendar = Calendar.getInstance();
              calendar.setTime(date);
              return calendar;
        }
    
    展开全文
  • 后端:Java 计算时间差

    万次阅读 2019-01-31 09:55:59
    * 用SimpleDateFormat计算时间差 * @throws ParseException */ public static void calculateTimeDifferenceBySimpleDateFormat() throws ParseException { SimpleDateFormat simpleFormat = new ...
  • //计算两个日期相差的天数 //startCalendar.getTime().getTime()返回long毫秒数形式,毫秒转为所以除以1000 //1天=24小时,1小时=60分,1分=60,所以两个时间再除以60 * 60 * 24换算成天的形式 days = ((int...
  • java 计算两个时间差的时分

    千次阅读 2018-08-11 11:49:00
    logger.info("时间差:" + duration.getSeconds()); long hour = duration.getSeconds() / ChronoUnit.HOURS.getDuration().getSeconds(); long minute = (duration.getSeconds() - ChronoUnit.HOURS.getDuration...
  • Java Calendar 计算时间差

    千次阅读 2016-07-26 14:25:00
    public static void main(String[] args) { Calendar c=Calendar.getInstance(); int y=2016;//年 int M=1;//月 int d=1;//日 int H=0;//时 ...// c.set(Calendar.YEAR, y);...
  • java计算时间差及比较时间大小

    千次阅读 2018-11-28 19:37:59
    我现在要获得两个日期,的形式为:XX天XX小时XX分XX 方法一: DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try {  Date d1 = df.parse("2004-03-26 13...
  • java中Date计算时间差

    千次阅读 2020-07-17 12:42:14
    1、java 7中的日历类Calendar Calendar类使用其静态的... *使用Calendar对象计算时间差,可以按照需求定制自己的计算逻辑 * @param strDate * @throws ParseException */ public static void calculateTimeD
  • NULL 博文链接:https://mr-lili-1986-163-com.iteye.com/blog/2165773
  • JAVA 计算String类型的时间差

    千次阅读 2018-12-29 16:57:00
    * 此方法计算时间毫秒 * 覃光林 * 2018-12-29 14:10:01 */ public static long fromDateStringToLong(String inVal) { Date date = null; // 定义时间类型 SimpleDateFormat inputFormat = new ...
  • * 计算两个时间相差数 * @param dateStr1 * @param dateStr2 * @return */ public static Long getDay(String dateStr1,String dateStr2){ // 获取日期 Date date1 = MyDateUtil.parseDate(dateStr1, ...
  • java计算两个日期相差的

    千次阅读 2021-07-09 18:14:57
    * 计算两个日期相差的数 * * @param startDate * @param endDate * @return */ public static int calLastedTime(Date startDate, Date endDate) { long a = endDate.getTime(); long b = ...
  • Java8中计算日期时间差

    万次阅读 多人点赞 2017-06-16 15:50:05
    简述在Java8中,我们可以使用以下类来计算日期时间差异:1.Period 2.Duration 3.ChronoUnit 二.Period类主要是Period类方法getYears(),getMonths()和getDays()来计算. 示例:package insping;import java.time...
  • java 计算两个日期时间差

    千次阅读 2019-02-21 11:39:22
    计算两个日期之间的天数: public static void main(String[] args) throws ParseException { String startTime = "2019-11-30"; String endTime = "2019-12-12"; Calendar startCal = Calendar.ge...
  • 转自:https://blog.csdn.net/dyr_1203/article/details/83997518(也是转载),这里做了一点点... public class JavaTest { public static void main(String[] args) { String format = "yyyy-MM-dd HH:mm:ss";...
  • java获取当前时间到凌晨0点的秒差

    千次阅读 2019-11-02 14:38:59
    上面这段代码存在一个问题,就是如果当前时间超过中午12:00,则返回的结果是当前时间到第二天中午12:00的数; 如果当前时间不超过中午12:00,则返回的结果是到第二天凌晨的数 解决方案 public Long...
  • 计算时间差方法 public static int getDistanceTimemin(String str1, String str2) { DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date one; Date two; long day...
  • Java目录监视器源程序 9个目标文件 内容索引:JAVA源码,综合应用,目录监视 用JAVA开发的一个小型的目录监视系统,系统会每5自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java...
  • java计算两个时间(yyyy-MM-dd HH:mm:ss)相差月数两个时间格式可为年月日时分
  • * 计算传入时间距离当前时间多久 * * @param date * @return */ public static String getTimeDiff(String date) { if (ObjectUtils.isEmpty(date)) { return ""; } StringBuilder sb = new StringBu...
  • 但是发现手动统计中 获取两个时间之间相差的小时数的计算有点儿问题。 今天就修改了一下,记录一下,下次用的时候直接取 String st = request.getParameter("st"); //开始时间 String ed = request.getParameter...
  • mysql计算时间差

    千次阅读 2018-09-08 11:38:39
    时间前台页面需要显示执行任务的时间,以显示,这就需要计算2个timestamp的时间差。 import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util....
  • Java实现计算出当天还剩多少,还剩多少时间 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class TimeUtil { //今天剩余...
  • Java 计算两个Data对象的时间差

    千次阅读 2018-09-24 20:08:29
     有时候需要计算两个Date对象的时间差来定时处理某种事务,获取到的时间差可以是分钟差,秒差,毫秒等等,相互转化即可  使用比较简单,Java提供了对应的API package io.bbc13.util; import java.text.Parse...
  • // 计算差多少 // 输出结果 System.out.println(“时间相差:” + day + “天” + (hour - day * 24) + “小时” + (min - day * 24 * 60) + “分钟” + sec + “。”); System.out.println(“hour=” + hour + ...
  • /** * @author: yaobin ... * @description: 时间差工具 */ public class DateDiffUtil { private static final Long ONE_DAY_SECOND = 24*60*60l; private static final Long ONE_HOUR_SEC...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 165,135
精华内容 66,054
关键字:

java计算时间秒差

java 订阅