java语言编程实现两个时间相差多少天、多少小时、多少分、多少秒

简介:

 

 

 

 

DateDistance.java

复制代码
package zhouls.bigdata.DataFeatureSelection.test;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 两个时间差计算
 */
public class DateDistance {
    private static String distanceTime;
    public static void main(String[] args) throws Exception {
        String startday =  "2017-09-20";     
        String endday ="2017-09-28";    
        long DistanceDays = getDistanceDays(startday,endday);//两个时间之间相差距离多少天 
        System.out.println(DistanceDays);
        
        String starttimes =  "2017-01-17 00:10:20";     
        String endtimes ="2017-01-18 00:10:21";
        long[] DistanceTimes = getDistanceTimes(starttimes,endtimes);//两个时间相差距离多少天多少小时多少分多少秒 ,以long[]形式返回
        for (int i = 0; i < DistanceTimes.length; i++) {
            System.out.println(DistanceTimes[i]);
        }
        
        String DistanceTime = getDistanceTime(starttimes,endtimes);//两个时间相差距离多少天多少小时多少分多少秒 ,以String形式返回
        System.out.println(DistanceTime);
    }
        
    
    
    /** 
     * 两个时间之间相差距离多少天 
     * @param one 时间参数 1: 
     * @param two 时间参数 2: 
     * @return 相差天数 
     */ 
        public static long getDistanceDays(String starttime, String endtime) throws Exception{  
            DateFormat df = new SimpleDateFormat("yyyy-MM-dd");  
            Date one;  
            Date two;  
            long days=0;  
            try {  
                one = df.parse(starttime);  
                two = df.parse(endtime);  
                long time1 = one.getTime();  
                long time2 = two.getTime();  
                long diff ;  
                if(time1<time2) {  
                    diff = time2 - time1;  
                } else {  
                    diff = time1 - time2;  
                }  
                days = diff / (1000 * 60 * 60 * 24);  
            } catch (ParseException e) {  
                e.printStackTrace();  
            }  
            return days;//返回相差多少天  
        }  
          
        
        /** 
         * 两个时间相差距离多少天多少小时多少分多少秒 
         * @param str1 时间参数 1 格式:1990-01-01 12:00:00 
         * @param str2 时间参数 2 格式:2009-01-01 12:00:00 
         * @return long[] 返回值为:{天, 时, 分, 秒} 
         */  
        public static long[] getDistanceTimes(String starttime, String endtime) {  
            DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
            Date one;  
            Date two;  
            long day = 0;  
            long hour = 0;  
            long min = 0;  
            long sec = 0;  
            try {  
                one = df.parse(starttime);  
                two = df.parse(endtime);  
                long time1 = one.getTime();  
                long time2 = two.getTime();  
                long diff ;  
                if(time1<time2) {  
                    diff = time2 - time1;  
                } else {  
                    diff = time1 - time2;  
                }  
                day = diff / (24 * 60 * 60 * 1000);  
                hour = (diff / (60 * 60 * 1000) - day * 24);  
                min = ((diff / (60 * 1000)) - day * 24 * 60 - hour * 60);  
                sec = (diff/1000-day*24*60*60-hour*60*60-min*60);  
            } catch (ParseException e) {  
                e.printStackTrace();  
            }  
            long[] times = {day, hour, min, sec};  
            return times;  
        }  
        
        
        
        /** 
         * 两个时间相差距离多少天多少小时多少分多少秒 
         * @param str1 时间参数 1 格式:1990-01-01 12:00:00 
         * @param str2 时间参数 2 格式:2009-01-01 12:00:00 
         * @return String 返回值为:xx天xx小时xx分xx秒 
         */  
        public static String getDistanceTime(String starttime, String endtime) {  
            DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
            Date one;  
            Date two;  
            long day = 0;  
            long hour = 0;  
            long min = 0;  
            long sec = 0;  
            try {  
                one = df.parse(starttime);  
                two = df.parse(endtime);  
                long time1 = one.getTime();  
                long time2 = two.getTime();  
                long diff ;  
                if(time1<time2) {  
                    diff = time2 - time1;  
                } else {  
                    diff = time1 - time2;  
                }  
                day = diff / (24 * 60 * 60 * 1000);  
                hour = (diff / (60 * 60 * 1000) - day * 24);  
                min = ((diff / (60 * 1000)) - day * 24 * 60 - hour * 60);  
                sec = (diff/1000-day*24*60*60-hour*60*60-min*60);  
            } catch (ParseException e) {  
                e.printStackTrace();  
            }  
            return day + "" + hour + "小时" + min + "" + sec + "";  
        }  
}
复制代码

 

 

 

 

 

 

  当然,我们可以进一步,将其放到一个时间的工具类去。

 

java编程如何实现多条2017-08-08 22:10:00.0这样的时间数据,相差多少天?(隔24小时为相差1天,否则为0天)

 

java编程如何实现多条2017-01-16 22:28:11.0这样的时间数据,转换成Date类型Mon Jan 16 22:28:11 CST 2017这样的时间数据

 

java编程如何实现2017-01-16 22:28:26.0这样的时间数据,转换成2017:01:16:22:28:26这样的时间数据

 

 

 

 

 

 

  同时,这里大家也可以更改格式

 

 

DateDistance.java

复制代码
package zhouls.bigdata.DataFeatureSelection.test;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 两个时间差计算
 */
public class DateDistance {
    private static String distanceTime;
    public static void main(String[] args) throws Exception {
        String startday =  "2017:09:20";     
        String endday ="2017:09:28";    
        long DistanceDays = getDistanceDays(startday,endday);//两个时间之间相差距离多少天 
        System.out.println(DistanceDays);
        
        String starttimes =  "2017:01:17 00:10:20";     
        String endtimes ="2017:01:18 00:10:21";
        long[] DistanceTimes = getDistanceTimes(starttimes,endtimes);//两个时间相差距离多少天多少小时多少分多少秒 ,以long[]形式返回
        for (int i = 0; i < DistanceTimes.length; i++) {
            System.out.println(DistanceTimes[i]);
        }
        
        String DistanceTime = getDistanceTime(starttimes,endtimes);//两个时间相差距离多少天多少小时多少分多少秒 ,以String形式返回
        System.out.println(DistanceTime);
    }
        
    
    
    /** 
     * 两个时间之间相差距离多少天 
     * @param one 时间参数 1: 
     * @param two 时间参数 2: 
     * @return 相差天数 
     */ 
        public static long getDistanceDays(String starttime, String endtime) throws Exception{  
            DateFormat df = new SimpleDateFormat("yyyy:MM:dd");  
            Date one;  
            Date two;  
            long days=0;  
            try {  
                one = df.parse(starttime);  
                two = df.parse(endtime);  
                long time1 = one.getTime();  
                long time2 = two.getTime();  
                long diff ;  
                if(time1<time2) {  
                    diff = time2 - time1;  
                } else {  
                    diff = time1 - time2;  
                }  
                days = diff / (1000 * 60 * 60 * 24);  
            } catch (ParseException e) {  
                e.printStackTrace();  
            }  
            return days;//返回相差多少天  
        }  
          
        
        /** 
         * 两个时间相差距离多少天多少小时多少分多少秒 
         * @param str1 时间参数 1 格式:1990-01-01 12:00:00 
         * @param str2 时间参数 2 格式:2009-01-01 12:00:00 
         * @return long[] 返回值为:{天, 时, 分, 秒} 
         */  
        public static long[] getDistanceTimes(String starttime, String endtime) {  
            DateFormat df = new SimpleDateFormat("yyyy:MM:dd HH:mm:ss");  
            Date one;  
            Date two;  
            long day = 0;  
            long hour = 0;  
            long min = 0;  
            long sec = 0;  
            try {  
                one = df.parse(starttime);  
                two = df.parse(endtime);  
                long time1 = one.getTime();  
                long time2 = two.getTime();  
                long diff ;  
                if(time1<time2) {  
                    diff = time2 - time1;  
                } else {  
                    diff = time1 - time2;  
                }  
                day = diff / (24 * 60 * 60 * 1000);  
                hour = (diff / (60 * 60 * 1000) - day * 24);  
                min = ((diff / (60 * 1000)) - day * 24 * 60 - hour * 60);  
                sec = (diff/1000-day*24*60*60-hour*60*60-min*60);  
            } catch (ParseException e) {  
                e.printStackTrace();  
            }  
            long[] times = {day, hour, min, sec};  
            return times;  
        }  
        
        
        
        /** 
         * 两个时间相差距离多少天多少小时多少分多少秒 
         * @param str1 时间参数 1 格式:1990-01-01 12:00:00 
         * @param str2 时间参数 2 格式:2009-01-01 12:00:00 
         * @return String 返回值为:xx天xx小时xx分xx秒 
         */  
        public static String getDistanceTime(String starttime, String endtime) {  
            DateFormat df = new SimpleDateFormat("yyyy:MM:dd HH:mm:ss");  
            Date one;  
            Date two;  
            long day = 0;  
            long hour = 0;  
            long min = 0;  
            long sec = 0;  
            try {  
                one = df.parse(starttime);  
                two = df.parse(endtime);  
                long time1 = one.getTime();  
                long time2 = two.getTime();  
                long diff ;  
                if(time1<time2) {  
                    diff = time2 - time1;  
                } else {  
                    diff = time1 - time2;  
                }  
                day = diff / (24 * 60 * 60 * 1000);  
                hour = (diff / (60 * 60 * 1000) - day * 24);  
                min = ((diff / (60 * 1000)) - day * 24 * 60 - hour * 60);  
                sec = (diff/1000-day*24*60*60-hour*60*60-min*60);  
            } catch (ParseException e) {  
                e.printStackTrace();  
            }  
            return day + "" + hour + "小时" + min + "" + sec + "";  
        }  
}



相关文章
|
9天前
|
安全 Java 调度
Java编程时多线程操作单核服务器可以不加锁吗?
Java编程时多线程操作单核服务器可以不加锁吗?
26 2
|
13天前
|
Java
死磕-java并发编程技术(二)
死磕-java并发编程技术(二)
|
13天前
|
存储 Java 调度
死磕-java并发编程技术(一)
死磕-java并发编程技术(一)
|
13天前
|
设计模式 缓存 Java
死磕-高效的Java编程(一)
死磕-高效的Java编程(一)
|
13天前
|
算法 安全 Java
JAVA并发编程系列(12)ThreadLocal就是这么简单|建议收藏
很多人都以为TreadLocal很难很深奥,尤其被问到ThreadLocal数据结构、以及如何发生的内存泄漏问题,候选人容易谈虎色变。 日常大家用这个的很少,甚至很多近10年资深研发人员,都没有用过ThreadLocal。本文由浅入深、并且才有通俗易懂方式全面分析ThreadLocal的应用场景、数据结构、内存泄漏问题。降低大家学习啃骨头的心理压力,希望可以帮助大家彻底掌握并应用这个核心技术到工作当中。
|
13天前
|
Java 程序员 编译器
死磕-高效的Java编程(二)
死磕-高效的Java编程(二)
|
8天前
|
Java
JAVA并发编程系列(13)Future、FutureTask异步小王子
本文详细解析了Future及其相关类FutureTask的工作原理与应用场景。首先介绍了Future的基本概念和接口方法,强调其异步计算特性。接着通过FutureTask实现了一个模拟外卖订单处理的示例,展示了如何并发查询外卖信息并汇总结果。最后深入分析了FutureTask的源码,包括其内部状态转换机制及关键方法的实现原理。通过本文,读者可以全面理解Future在并发编程中的作用及其实现细节。
|
11天前
|
Java 数据处理 调度
Java中的多线程编程:从基础到实践
本文深入探讨了Java中多线程编程的基本概念、实现方式及其在实际项目中的应用。首先,我们将了解什么是线程以及为何需要多线程编程。接着,文章将详细介绍如何在Java中创建和管理线程,包括继承Thread类、实现Runnable接口以及使用Executor框架等方法。此外,我们还将讨论线程同步和通信的问题,如互斥锁、信号量、条件变量等。最后,通过具体的示例展示了如何在实际项目中有效地利用多线程提高程序的性能和响应能力。
|
12天前
|
安全 算法 Java
Java中的多线程编程:从基础到高级应用
本文深入探讨了Java中的多线程编程,从最基础的概念入手,逐步引导读者了解并掌握多线程开发的核心技术。无论是初学者还是有一定经验的开发者,都能从中获益。通过实例和代码示例,本文详细讲解了线程的创建与管理、同步与锁机制、线程间通信以及高级并发工具等主题。此外,还讨论了多线程编程中常见的问题及其解决方案,帮助读者编写出高效、安全的多线程应用程序。
|
14天前
|
存储 缓存 Java
JAVA并发编程系列(11)线程池底层原理架构剖析
本文详细解析了Java线程池的核心参数及其意义,包括核心线程数量(corePoolSize)、最大线程数量(maximumPoolSize)、线程空闲时间(keepAliveTime)、任务存储队列(workQueue)、线程工厂(threadFactory)及拒绝策略(handler)。此外,还介绍了四种常见的线程池:可缓存线程池(newCachedThreadPool)、定时调度线程池(newScheduledThreadPool)、单线程池(newSingleThreadExecutor)及固定长度线程池(newFixedThreadPool)。