java两个日期之间的差异

java两个日期之间的差异,java,Java,我需要帮助。我有两次约会 private Date endDate; private Date now; public String getRemainingTime(endDate) { now = new Date(); //logic } Date endDate; Date now; StringBuilder sb = new StringBuilder(); //timestamp difference in m

我需要帮助。我有两次约会

private Date endDate;
private Date now;

public String getRemainingTime(endDate) {
   now = new Date();

   //logic

}
Date endDate;
         Date now;
         StringBuilder sb = new StringBuilder();
        //timestamp difference in millis 
        Long diff = endaDate.getTime() - now.getTime();
        //get the seconds
        long seconds = diff / 1000;
        //get the minutes
        long minutes = diff / (1000 * 60);
        //get the hours
        long hrs = diff / (1000 * 60 * 60);
        if (hrs > 0) {
            sb.append(hrs + " hrs");
            if (minutes % 60 > 0) {
                sb.append(", " + minutes % 60 + " mins");
            }
            if (seconds % 60 > 0) {
                sb.append(", " + seconds % 60 + " secs");
            }
        } else if (minutes % 60 > 0) {
            sb.append(minutes % 60 + " mins");
            if (seconds % 60 > 0) {
                sb.append(", " + seconds % 60 + " secs");
            }
        } else if (seconds % 60 > 0) {
            sb.append(seconds % 60 + " secs");
        } else {
            sb.append("00");
        }
        System.out.println(sb.toString());
我还有一个方法,它应该返回字符串格式中两个日期之间的差异,如果差异超过1天,例如“1天15分钟”

Date endDate;
         Date now;
         StringBuilder sb = new StringBuilder();
        //timestamp difference in millis 
        Long diff = endaDate.getTime() - now.getTime();
        //get the seconds
        long seconds = diff / 1000;
        //get the minutes
        long minutes = diff / (1000 * 60);
        //get the hours
        long hrs = diff / (1000 * 60 * 60);
        if (hrs > 0) {
            sb.append(hrs + " hrs");
            if (minutes % 60 > 0) {
                sb.append(", " + minutes % 60 + " mins");
            }
            if (seconds % 60 > 0) {
                sb.append(", " + seconds % 60 + " secs");
            }
        } else if (minutes % 60 > 0) {
            sb.append(minutes % 60 + " mins");
            if (seconds % 60 > 0) {
                sb.append(", " + seconds % 60 + " secs");
            }
        } else if (seconds % 60 > 0) {
            sb.append(seconds % 60 + " secs");
        } else {
            sb.append("00");
        }
        System.out.println(sb.toString());
如果差异大于1小时但小于1天,则以“1小时13分钟”为例

Date endDate;
         Date now;
         StringBuilder sb = new StringBuilder();
        //timestamp difference in millis 
        Long diff = endaDate.getTime() - now.getTime();
        //get the seconds
        long seconds = diff / 1000;
        //get the minutes
        long minutes = diff / (1000 * 60);
        //get the hours
        long hrs = diff / (1000 * 60 * 60);
        if (hrs > 0) {
            sb.append(hrs + " hrs");
            if (minutes % 60 > 0) {
                sb.append(", " + minutes % 60 + " mins");
            }
            if (seconds % 60 > 0) {
                sb.append(", " + seconds % 60 + " secs");
            }
        } else if (minutes % 60 > 0) {
            sb.append(minutes % 60 + " mins");
            if (seconds % 60 > 0) {
                sb.append(", " + seconds % 60 + " secs");
            }
        } else if (seconds % 60 > 0) {
            sb.append(seconds % 60 + " secs");
        } else {
            sb.append("00");
        }
        System.out.println(sb.toString());
如果差值小于1小时-“35分39秒”,类似这样的

Date endDate;
         Date now;
         StringBuilder sb = new StringBuilder();
        //timestamp difference in millis 
        Long diff = endaDate.getTime() - now.getTime();
        //get the seconds
        long seconds = diff / 1000;
        //get the minutes
        long minutes = diff / (1000 * 60);
        //get the hours
        long hrs = diff / (1000 * 60 * 60);
        if (hrs > 0) {
            sb.append(hrs + " hrs");
            if (minutes % 60 > 0) {
                sb.append(", " + minutes % 60 + " mins");
            }
            if (seconds % 60 > 0) {
                sb.append(", " + seconds % 60 + " secs");
            }
        } else if (minutes % 60 > 0) {
            sb.append(minutes % 60 + " mins");
            if (seconds % 60 > 0) {
                sb.append(", " + seconds % 60 + " secs");
            }
        } else if (seconds % 60 > 0) {
            sb.append(seconds % 60 + " secs");
        } else {
            sb.append("00");
        }
        System.out.println(sb.toString());
请帮帮我,我不熟悉java

该库可能符合您的需要:

DateTime now
DateTime endDate;
Period p = new Period(now, endDate);
long hours = p.getHours();
long minutes = p.getMinutes();
Date endDate;
         Date now;
         StringBuilder sb = new StringBuilder();
        //timestamp difference in millis 
        Long diff = endaDate.getTime() - now.getTime();
        //get the seconds
        long seconds = diff / 1000;
        //get the minutes
        long minutes = diff / (1000 * 60);
        //get the hours
        long hrs = diff / (1000 * 60 * 60);
        if (hrs > 0) {
            sb.append(hrs + " hrs");
            if (minutes % 60 > 0) {
                sb.append(", " + minutes % 60 + " mins");
            }
            if (seconds % 60 > 0) {
                sb.append(", " + seconds % 60 + " secs");
            }
        } else if (minutes % 60 > 0) {
            sb.append(minutes % 60 + " mins");
            if (seconds % 60 > 0) {
                sb.append(", " + seconds % 60 + " secs");
            }
        } else if (seconds % 60 > 0) {
            sb.append(seconds % 60 + " secs");
        } else {
            sb.append("00");
        }
        System.out.println(sb.toString());

如果“建议的评论”链接不起作用,请尝试以下操作: `

Date endDate;
         Date now;
         StringBuilder sb = new StringBuilder();
        //timestamp difference in millis 
        Long diff = endaDate.getTime() - now.getTime();
        //get the seconds
        long seconds = diff / 1000;
        //get the minutes
        long minutes = diff / (1000 * 60);
        //get the hours
        long hrs = diff / (1000 * 60 * 60);
        if (hrs > 0) {
            sb.append(hrs + " hrs");
            if (minutes % 60 > 0) {
                sb.append(", " + minutes % 60 + " mins");
            }
            if (seconds % 60 > 0) {
                sb.append(", " + seconds % 60 + " secs");
            }
        } else if (minutes % 60 > 0) {
            sb.append(minutes % 60 + " mins");
            if (seconds % 60 > 0) {
                sb.append(", " + seconds % 60 + " secs");
            }
        } else if (seconds % 60 > 0) {
            sb.append(seconds % 60 + " secs");
        } else {
            sb.append("00");
        }
        System.out.println(sb.toString());

`

更新
Date endDate;
         Date now;
         StringBuilder sb = new StringBuilder();
        //timestamp difference in millis 
        Long diff = endaDate.getTime() - now.getTime();
        //get the seconds
        long seconds = diff / 1000;
        //get the minutes
        long minutes = diff / (1000 * 60);
        //get the hours
        long hrs = diff / (1000 * 60 * 60);
        if (hrs > 0) {
            sb.append(hrs + " hrs");
            if (minutes % 60 > 0) {
                sb.append(", " + minutes % 60 + " mins");
            }
            if (seconds % 60 > 0) {
                sb.append(", " + seconds % 60 + " secs");
            }
        } else if (minutes % 60 > 0) {
            sb.append(minutes % 60 + " mins");
            if (seconds % 60 > 0) {
                sb.append(", " + seconds % 60 + " secs");
            }
        } else if (seconds % 60 > 0) {
            sb.append(seconds % 60 + " secs");
        } else {
            sb.append("00");
        }
        System.out.println(sb.toString());
1)此代码将完成此任务(编译器将包装常量):

Date endDate;
         Date now;
         StringBuilder sb = new StringBuilder();
        //timestamp difference in millis 
        Long diff = endaDate.getTime() - now.getTime();
        //get the seconds
        long seconds = diff / 1000;
        //get the minutes
        long minutes = diff / (1000 * 60);
        //get the hours
        long hrs = diff / (1000 * 60 * 60);
        if (hrs > 0) {
            sb.append(hrs + " hrs");
            if (minutes % 60 > 0) {
                sb.append(", " + minutes % 60 + " mins");
            }
            if (seconds % 60 > 0) {
                sb.append(", " + seconds % 60 + " secs");
            }
        } else if (minutes % 60 > 0) {
            sb.append(minutes % 60 + " mins");
            if (seconds % 60 > 0) {
                sb.append(", " + seconds % 60 + " secs");
            }
        } else if (seconds % 60 > 0) {
            sb.append(seconds % 60 + " secs");
        } else {
            sb.append("00");
        }
        System.out.println(sb.toString());
公共字符串getIntervalAsString(日期date1,日期date2){
字符串格式;
long dT=date2.getTime()-date1.getTime();
如果(dT<1000*60)
format=“s‘sec’”;
否则如果(dT<1000*60*60)
format=“m‘min’s‘sec’;
否则如果(dT<1000*60*60*24)
format=“h”小时“m”分钟”;
否则如果(dT<1000*60*60*24*365)
format=“d”天“h”小时”;
其他的
格式=“超过一年”;
SimpleDataFormat格式化程序=新的SimpleDataFormat(格式);
返回格式化程序.format(新日期(dT));
}
2)您可以尝试不同的模式

私有静态最终长毫秒每秒=1000L;
Date endDate;
         Date now;
         StringBuilder sb = new StringBuilder();
        //timestamp difference in millis 
        Long diff = endaDate.getTime() - now.getTime();
        //get the seconds
        long seconds = diff / 1000;
        //get the minutes
        long minutes = diff / (1000 * 60);
        //get the hours
        long hrs = diff / (1000 * 60 * 60);
        if (hrs > 0) {
            sb.append(hrs + " hrs");
            if (minutes % 60 > 0) {
                sb.append(", " + minutes % 60 + " mins");
            }
            if (seconds % 60 > 0) {
                sb.append(", " + seconds % 60 + " secs");
            }
        } else if (minutes % 60 > 0) {
            sb.append(minutes % 60 + " mins");
            if (seconds % 60 > 0) {
                sb.append(", " + seconds % 60 + " secs");
            }
        } else if (seconds % 60 > 0) {
            sb.append(seconds % 60 + " secs");
        } else {
            sb.append("00");
        }
        System.out.println(sb.toString());
专用静态最终长毫/分=毫/秒*60L; 专用静态最终长毫/小时=毫/分钟*60L; 专用静态最终长毫/天=毫/小时*24L; 公共字符串getRemainingTime(日期endDate){ long remain=endDate.getTime()-System.currentTimeMillis(); 如果(保持0升){ 附加(天); } 如果(小时>0升| |天>0升){ 附加(小时)附加(小时); } 如果(分钟>0升| |天>0升| |小时>0升){ 附加(分钟); } 如果(秒>0升){ 附加(秒)附加(秒); } 使某人返回字符串(); }
类似这样的问题可能重复。。一种可能的解决方案可能是更加熟悉Java。这有助于使用它进行编程……您可能希望了解定义持续时间的明确字符串表示形式的标准:
P[n]Y[n]M[n]DT[n]H[n]M[n]S
。Joda Time和java.Time库都可以解析和生成这些字符串。当我们有非常好的常用库(如Joda Time和java.Time)时,滚动自己的代码是个坏主意。这对于复杂且容易出错的日期-时间工作尤其如此。主要工作由属于java.text的SimpleDataFormat完成。在需要几行代码的情况下,附加非标准库是多余的(就apk的大小而言)。