假设有两个日期。
第一个日期为:2012年9月13日2时3分4秒
第二个日期为:2012年8月12日0时0分0秒
求二者的时间差的代码如下
import java.text.SimpleDateFormat;
import java.util.Date;
public class TimeDifference2 {
private static int days; //天数
private static int hours; //时
private static int minutes; //分
private static int seconds; //秒
//第一个字符串
public static final String FIRST = "Sep 13 02:03:04 GMT 2012";
//第二个字符串
public static final String SECOND = "Aug 12 00:00:00 GMT 2012";
public static void main(String[] args) {
//通过字符串创建两个日期对象
Date firstDate = new Date(FIRST);
Date secondDate = new Date(SECOND);
//得到两个日期对象的总毫秒数
long firstDateMilliSeconds = firstDate.getTime();
long secondDateMilliSeconds = secondDate.getTime();
//得到两者之差
long firstMinusSecond = firstDateMilliSeconds - secondDateMilliSeconds;
//毫秒转为秒
long milliSeconds = firstMinusSecond;
int totalSeconds = (int)(milliSeconds / 1000);
//得到总天数
days = totalSeconds / (3600*24);
int days_remains = totalSeconds % (3600*24);
//得到总小时数
hours = days_remains / 3600;
int remains_hours = days_remains % 3600;
//得到分种数
minutes = remains_hours / 60;
//得到总秒数
seconds = remains_hours % 60;
//打印结果
//第一个比第二个多32天2小时3分4秒
System.out.print("第一个比第二个多");
System.out.println(days+"天"+hours+"小时"+minutes+"分"+seconds+"秒");
}
}
对于日期格式为yyyy-MM-dd hh-mm-ss格式的字符串可以转换为Date类型
比如图书管理系统的还书部分,就可以用下面方法计算出节约天数
String now = DateFormat.getDateInstance().format(Calendar.getInstance().getTime());
这种方式就会获得这种格式的当前时间的String类型,borrowTime可以是从数据库中读取的字符串形式的日期
int days = (int) ((Date.valueOf(returnTime).getTime() - Date.valueOf(borrowTime).getTime())/1000/60/60/24);
这样就会获得两个指定时间的时间差,单位是毫秒,然后进行单位转换就好了
你好,原理是:先求出指定定日期的毫秒,然后按照日期的规则运算。
实测过代码如下:
public static long fromDateStringToLong(String inVal) { // 此方法计算时间毫秒
Date date = null; // 定义时间类型
SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
try {
date = inputFormat.parse(inVal); // 将字符型转换成日期型
} catch (Exception e) {
e.printStackTrace();
}
return date.getTime(); // 返回毫秒数
}
public static void main(String[] args) {
long startT = TestDateMinus.fromDateStringToLong("2005-03-03 14:51:23"); // 定义测试时间1
long endT = TestDateMinus.fromDateStringToLong("2005-03-03 13:50:23"); // 定义测试时间2
long ss = (startT - endT) / 1000; // 共计秒数
int MM = (int) ss / 60; // 共计分钟数
int hh = (int) ss / 3600; // 共计小时数
int dd = (int) hh / 24; // 共计天数
System.out.println("共" + dd + "天,时间是:" + hh + " 小时 " + MM + " 分钟"
+ ss + " 秒 共计:" + ss * 1000 + " 毫秒");
}
先把日期转换成日期型的,在进行相减
用to_date();