String str1="2006-09-21 08:02:19";
String str2="2006-09-21 14:46:25";
我怎么得到 这两个时间差多少分钟? 

解决方案 »

  1.   

    先解析字符串后用GregorianCalendar()
      

  2.   

    如果你的字符格式是一定的,也可以不用Calendar类,可以先把分钟取到一个字符数组里,再转换成字符串,转换成整型就可以比较。
      

  3.   

    import java.util.*;
    class Test
    { public static void main(String args[])
    {
         String str1="2006-09-21 08:02:19";
         String str2="2006-09-21 14:46:25";
         char c1[],c2[];
         c1=new char[2];
         str1.getChars(14,16,c1,0);
         String s1=new String(c1,0,2);
         int m=Integer.parseInt(s1);
         c2=new char[2];
         str2.getChars(14,16,c2,0);
        String s2=new String(c2,0,2);
        int n=Integer.parseInt(s2);
        int r=Math.abs(m-n);
        System.out.println("相差"+r+"分钟");
    }
    }
      

  4.   

    Vpackage com.wx.util;
    import java.util.Calendar;public class TimeDif {
    private String str1="2006-09-21 08:02:19";
    private String str2="2006-09-20 08:02:19";
    private long mins=0;
    /**
     * 得到分钟差,可能出现负值
     * @return the mins
     */
    public long getMins() {
    this.exec();
    return mins;
    }
    /**
     * 给第一个日期赋值
     * @param str1 the str1 to set
     */
    public void setStr1(String str1) {
    this.str1 = str1;
    }
    /**
     * 给第二个日期赋值
     * @param str2 the str2 to set
     */
    public void setStr2(String str2) {
    this.str2 = str2;
    } private void exec(){
    java.util.ArrayList<Integer> list=this.getNums(str1);
    Calendar c1=new java.util.GregorianCalendar();
    c1.set(list.get(0), list.get(1), list.get(2), list.get(3), list.get(4), list.get(5));
    list=this.getNums(str2);
    Calendar c2=new java.util.GregorianCalendar();
    c2.set(list.get(0), list.get(1), list.get(2), list.get(3), list.get(4), list.get(5));
    System.out.println(c1.getTime());
    System.out.println(c2.getTime());
    System.out.println(c2.compareTo(c1));
    mins=(c1.getTimeInMillis()-c2.getTimeInMillis())/1000/60;

    }
    /**
     * 返回字符串中的各个时间值,年,月.....
     * @param parStr
     * @return
     */
    private java.util.ArrayList<Integer> getNums(String parStr){
    java.util.ArrayList<Integer> al=new java.util.ArrayList<Integer>();
    String[] str=parStr.split(" ");
    String[] strTemp=str[0].split("-");
    for (int i = 0; i < strTemp.length; i++) {
    al.add(Integer.parseInt(strTemp[i]));
    }
    strTemp=str[1].split(":");
    for (int i = 0; i < strTemp.length; i++) {
    al.add(Integer.parseInt(strTemp[i]));
    }
    return al;
    }

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    /**
     * 可以通过两个set方法改变日期进行验证
     */
    System.out.println(new TimeDif().getMins());
    }
    }