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的大小而言)。