有没有不用到 import java.text.SimpleDateFormat; import java.util.Date; 类的, 就用算术运算法 来解决这个问题的代码我有一个相加的代码 大家可以参考一下! public static String AddTime(String time1, String time2) throws NumberFormatException { if (time1.indexOf(":") < 0 || time2.indexOf(":") < 0) { throw new NumberFormatException("Time Format Error!"); } String[] time1s = time1.split(":"); String[] time2s = time2.split(":"); String result = ""; try { result = Integer.toString(Integer.parseInt(time1s[0]) + Integer.parseInt(time2s[0]) + (Integer.parseInt(time1s[1]) + Integer .parseInt(time2s[1])) / 60); result += ":" + Integer.toString((Integer.parseInt(time1s[1]) + Integer.parseInt(time2s[1]) + (Integer.parseInt(time1s[2]) + Integer .parseInt(time2s[2])) / 60)%60); result += ":" + Integer.toString((Integer.parseInt(time1s[2]) +Integer.parseInt(time2s[2]))%60); } catch (NumberFormatException exx) { throw new NumberFormatException("Time Format Error!"); } return result; }
mport java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date;public class Time { public static void main(String[] args) { SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); long DAY=24*60*60*1000; try { Date date1 = sdf.parse("12:08:34"); Date date2 = sdf.parse("1300:09:40"); long between = date2.getTime() - date1.getTime();//毫秒数 long day=between/DAY; long hour=(between/(60*60*1000)-day*24); long min=((between/(60*1000))-day*24*60-hour*60); long s=(between/1000-day*24*60*60-hour*60*60-min*60); System.out.println(""+day+"天"+hour+"小时"+min+"分"+s+"秒"); } catch (Exception e) { e.printStackTrace(); } } }
7楼我写的1000小时的时候出错,不好意思,修正:import java.util.Date;public class TestDate { public static void main(String[] args) { try { String dateStr1 = "12:08:34"; String dateStr2 = "1000:09:40"; Date date1 = getDate(dateStr1); Date date2 = getDate(dateStr2); System.out.println(date2.getTime() - date1.getTime());//毫秒数 } catch (Exception e) { e.printStackTrace(); } } private static Date getDate(String dateStr) { String[] dateHMS = dateStr.split(":"); long h = (Long.valueOf(dateHMS[0]) - 8) * 60 * 60 * 1000; long m = Integer.valueOf(dateHMS[1]) * 60 * 1000; long s = Integer.valueOf(dateHMS[2]) * 1000; return new Date(h + m + s); } }
String[] time1 = "12:08:34".split(":"); String[] time2 = "13:09:40".split(":"); int hour = Integer.parse(time2[0]) - Integer.parse(time1[0]); int min = Integer.parse(time2[1]) - Integer.parse(time1[1]); int second = Integer.parse(time2[2]) - Integer.parse(time1[2]);long result = hour * 3600 + min * 60 + second;
logi22 大哥报错了 :java.lang.Error: Unresolved compilation problems: The operator - is undefined for the argument type(s) Long, int The operator * is undefined for the argument type(s) Integer, int The operator * is undefined for the argument type(s) Integer, int at com.tienon.util.time.TimeDec.getDate(TimeDec.java:26) at com.tienon.util.time.TimeDec.main(TimeDec.java:14) Exception in thread "main" 这段有错! long h = (Long.valueOf(dateHMS[0])-8)*60*60*1000 ; long m = Integer.valueOf(dateHMS[1]) * 60 * 1000; long s = Integer.valueOf(dateHMS[2]) * 1000; 我用的是JDK 1.4 是不是这个问题引起的
用simpledateformat把date型格式化为String型就可以了 long dateMs = date2.getTime() - date1.getTime(); Date date = new Date(dateMs); System.out.println(new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(date));
不知道这样行不行 public static String timeDiff(String time1, String time2){ try { String[] t1 = time1.split(":"); String[] t2 = time2.split(":"); int a = (Integer.parseInt(t1[2]) - Integer.parseInt(t2[2])); int b = (Integer.parseInt(t1[1]) - Integer.parseInt(t2[1])); int c = (Integer.parseInt(t1[0]) - Integer.parseInt(t2[0])); if (a < 0) { a = a + 60; b = b - 1; } if (b < 0) { b = b + 60; c = c - 1; } return c + ":" + b + ":" + a; } catch (Exception e) { e.printStackTrace(); return null; } }
这样:public static String timeDiff(String time1, String time2){ try { NumberFormat nf = NumberFormat.getInstance(); String[] t1 = time1.split(":"); String[] t2 = time2.split(":"); int a = (nf.parse(t1[2]).intValue()- nf.parse(t2[2]).intValue()); int b = (nf.parse(t1[1]).intValue() - nf.parse(t2[1]).intValue()); int c = (nf.parse(t1[0]).intValue() - nf.parse(t2[0]).intValue()); if (a < 0) { a = a + 60; b = b - 1; } if (b < 0) { b = b + 60; c = c - 1; } return c + ":" + b + ":" + a; } catch (Exception e) { e.printStackTrace(); return null; } }
long b = d2.getTime();
System.out.println(b-a);
相减得到相差的毫秒数
import java.text.SimpleDateFormat;
import java.util.Date;public class TestDate { public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); try {
Date date1 = sdf.parse("12:08:34");
Date date2 = sdf.parse("13:09:40"); System.out.println((date2.getTime() - date1.getTime()));//毫秒数
} catch (Exception e) {
e.printStackTrace();
}
}
}时间类型本质是一个1970年1月1日开始的毫秒数,是long型值,计算都用getTime取得这个long值来计算
要输出的话用simpledateformat把date型格式化为String型就可以了
如年月日时分秒输出就是System.out.println(new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(new Date()));
import java.util.Date;public class TestDate { public static void main(String[] args) {
try {
String dateStr1 = "12:08:34";
String dateStr2 = "13:09:40";
System.out.println(getDate(dateStr2).getTime() - getDate(dateStr1).getTime());
} catch (Exception e) {
e.printStackTrace();
}
} private static Date getDate(String dateStr) {
String[] dateHMS = dateStr.split(":");
return new Date(Integer.valueOf(dateHMS[2]) * 1000 + Integer.valueOf(dateHMS[1]) * 60
* 1000 + (Integer.valueOf(dateHMS[0]) - 8) * 60 * 60 * 1000);
}
import java.text.SimpleDateFormat;
import java.util.Date;
类的, 就用算术运算法 来解决这个问题的代码我有一个相加的代码 大家可以参考一下!
public static String AddTime(String time1, String time2)
throws NumberFormatException {
if (time1.indexOf(":") < 0 || time2.indexOf(":") < 0) {
throw new NumberFormatException("Time Format Error!");
}
String[] time1s = time1.split(":");
String[] time2s = time2.split(":");
String result = "";
try {
result = Integer.toString(Integer.parseInt(time1s[0])
+ Integer.parseInt(time2s[0])
+ (Integer.parseInt(time1s[1]) + Integer
.parseInt(time2s[1])) / 60);
result += ":"
+ Integer.toString((Integer.parseInt(time1s[1])
+ Integer.parseInt(time2s[1])
+ (Integer.parseInt(time1s[2]) + Integer
.parseInt(time2s[2])) / 60)%60);
result += ":"
+ Integer.toString((Integer.parseInt(time1s[2])
+Integer.parseInt(time2s[2]))%60);
} catch (NumberFormatException exx) {
throw new NumberFormatException("Time Format Error!");
}
return result;
}
mport java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;public class Time { public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
long DAY=24*60*60*1000;
try {
Date date1 = sdf.parse("12:08:34");
Date date2 = sdf.parse("1300:09:40");
long between = date2.getTime() - date1.getTime();//毫秒数
long day=between/DAY;
long hour=(between/(60*60*1000)-day*24);
long min=((between/(60*1000))-day*24*60-hour*60);
long s=(between/1000-day*24*60*60-hour*60*60-min*60);
System.out.println(""+day+"天"+hour+"小时"+min+"分"+s+"秒");
} catch (Exception e) {
e.printStackTrace();
}
}
}
try {
String dateStr1 = "12:08:34";
String dateStr2 = "1000:09:40"; Date date1 = getDate(dateStr1);
Date date2 = getDate(dateStr2); System.out.println(date2.getTime() - date1.getTime());//毫秒数 } catch (Exception e) {
e.printStackTrace();
}
} private static Date getDate(String dateStr) {
String[] dateHMS = dateStr.split(":");
long h = (Long.valueOf(dateHMS[0]) - 8) * 60 * 60 * 1000;
long m = Integer.valueOf(dateHMS[1]) * 60 * 1000;
long s = Integer.valueOf(dateHMS[2]) * 1000; return new Date(h + m + s);
}
}
String[] time2 = "13:09:40".split(":");
int hour = Integer.parse(time2[0]) - Integer.parse(time1[0]);
int min = Integer.parse(time2[1]) - Integer.parse(time1[1]);
int second = Integer.parse(time2[2]) - Integer.parse(time1[2]);long result = hour * 3600 + min * 60 + second;
The operator - is undefined for the argument type(s) Long, int
The operator * is undefined for the argument type(s) Integer, int
The operator * is undefined for the argument type(s) Integer, int at com.tienon.util.time.TimeDec.getDate(TimeDec.java:26)
at com.tienon.util.time.TimeDec.main(TimeDec.java:14)
Exception in thread "main"
这段有错! long h = (Long.valueOf(dateHMS[0])-8)*60*60*1000 ;
long m = Integer.valueOf(dateHMS[1]) * 60 * 1000;
long s = Integer.valueOf(dateHMS[2]) * 1000;
我用的是JDK 1.4 是不是这个问题引起的
Date date = new Date(dateMs);
System.out.println(new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(date));
应该是jdk版本的问题,1.5好像添加了对基本类型的自动转换,建议你更新jdk1.5,我这里1.5没有问题的
或者自己把每个int都先转成long再计算
public static String timeDiff(String time1, String time2){
try {
String[] t1 = time1.split(":");
String[] t2 = time2.split(":");
int a = (Integer.parseInt(t1[2]) - Integer.parseInt(t2[2]));
int b = (Integer.parseInt(t1[1]) - Integer.parseInt(t2[1]));
int c = (Integer.parseInt(t1[0]) - Integer.parseInt(t2[0]));
if (a < 0) {
a = a + 60;
b = b - 1;
}
if (b < 0) {
b = b + 60;
c = c - 1;
}
return c + ":" + b + ":" + a;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
String time1 = "14:08:24" ;
String time2 = "13:07:23" ; 这样就不行了 String time1 = "15:08:24" ;
String time2 = "13:18:43" ;
try {
NumberFormat nf = NumberFormat.getInstance();
String[] t1 = time1.split(":");
String[] t2 = time2.split(":");
int a = (nf.parse(t1[2]).intValue()- nf.parse(t2[2]).intValue());
int b = (nf.parse(t1[1]).intValue() - nf.parse(t2[1]).intValue());
int c = (nf.parse(t1[0]).intValue() - nf.parse(t2[0]).intValue());
if (a < 0) {
a = a + 60;
b = b - 1;
}
if (b < 0) {
b = b + 60;
c = c - 1;
}
return c + ":" + b + ":" + a;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public testtime() {
String t1[] = "12:08:34".split(":");
String t2[] = "13:09:40".split(":"); Calendar c1 = Calendar.getInstance();
Calendar c2 = Calendar.getInstance(); c1.set(Calendar.HOUR_OF_DAY, Integer.parseInt(t1[0]));
c1.set(Calendar.MINUTE, Integer.parseInt(t1[1]));
c1.set(Calendar.SECOND, Integer.parseInt(t1[2])); c2.set(Calendar.HOUR_OF_DAY, Integer.parseInt(t2[0]));
c2.set(Calendar.MINUTE, Integer.parseInt(t2[1]));
c2.set(Calendar.SECOND, Integer.parseInt(t2[2])); System.out.println((c2.getTime().getTime() - c1.getTime().getTime()) / 1000);
} public static void main(String[] args) {
new testtime();
}
}