我有这么一个需求 想写个方法 传入的参数是 一个String类型的时间 例如:2009-02-17 17:10:10
在这个方法里我获取当前日期,如果我传的参数日期在后面,返回一个String类型的他们之间的时间差 只到小时 例如:38:15:00(三十八小时15分) 如果获取的当前日期在后面 则返回0
在这个方法里我获取当前日期,如果我传的参数日期在后面,返回一个String类型的他们之间的时间差 只到小时 例如:38:15:00(三十八小时15分) 如果获取的当前日期在后面 则返回0
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date date = format.parse(strTime);
Date now = new Date();
if (now.after(date)) {
return "0";
} else {
long time = date.getTime() - now.getTime();
int hour = (int) (time / (60 * 60 * 1000));
int minute = (int) ((time % (60 * 60 * 1000)) / (60 * 1000));
int second = (int) (((time % (60 * 60 * 1000)) % (60 * 1000)) / 1000 + 1);
return "" + (hour < 10 ? ("0"+ hour) : hour) + ":" + (minute < 10 ? ("0"+ minute) : minute) + ":" + (second < 10 ? ("0"+ second) : second);
}
}
public static String minus(String strTime) throws ParseException {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date date = format.parse(strTime);
Date now = new Date();
System.out.println(date);
System.out.println(now);
if (now.after(date)) {
return "0";
} else {
long time = date.getTime() - now.getTime();
int hour = (int) (time / (60 * 60 * 1000));
int minute = (int) ((time % (60 * 60 * 1000)) / (60 * 1000));
int second = (int) (((time % (60 * 60 * 1000)) % (60 * 1000)) / 1000 + 1);
if (second == 60) {
second = 0;
minute += 1;
}
if (minute == 60) {
minute = 0;
hour += 1;
}
return "" + (hour < 10 ? ("0"+ hour) : hour) + ":" + (minute < 10 ? ("0"+ minute) : minute) + ":" + (second < 10 ? ("0"+ second) : second);
}
}
public static String getSubTime(String time) throws Exception {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date rightNow = new Date();
Date target = simpleDateFormat.parse(time);
if (rightNow.after(target)) {
return "0";
}
long subTime = target.getTime() - rightNow.getTime();
StringBuffer sb = new StringBuffer();
sb.append(subTime / 3600000).append(":");
if (subTime % 3600000 == 0) {
return sb.append("00:00").toString();
}
subTime = subTime % 3600000;
long temp = subTime / 60000;
sb.append(temp < 10 ? "0" + temp : temp).append(":");
if (subTime % 60000 == 0) {
return sb.append("00").toString();
}
subTime = subTime % 60000;
temp = subTime / 1000;
sb.append(temp < 10 ? "0" + temp : temp);
return sb.toString();
}
虽然lz已经结贴,但我觉得除了我的方法,应该还有更优化的方法。