Date loginTime ;//得到系统当前时间
Date lastTime ;//从数据库中取到上次登录时间
long xTime;
if((loginTime.getTime()-lastTime.getTime())>=0){
xTime=loginTime.getTime()-lastTime.getTime();
}else {
xTime=loginTime.getTime()-lastTime.getTime();

}xTime 是个long型的,怎么转回到Date呢????
用过
 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 Date date=new Date();
 date.setTime(xTime);
 System.out.println(sdf.format(date));
 //打出来是  1970-01-15 08:07:57  显然不是我想的结果谢谢

解决方案 »

  1.   

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-ddHH-mm-ss");
      

  2.   


    import java.text.SimpleDateFormat;
    import java.util.Date;public class DateDemo {
    public DateDemo() {
    }
    public long dateStrToLong(String var) {
    Date date = null;
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    try {
    date = format.parse(var);
    } catch (Exception e) {
    e.printStackTrace();
    }
    return date.getTime();
    }
    public String longTimeToDate(long var) {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd   hh:ss");
    Date currentTime = new Date(var);
    return sdf.format(currentTime);
    }
    public static void main(String[] args) {
    DateDemo df = new DateDemo();
    long startT = new Date().getTime();
    long endT = df.dateStrToLong("2010-07-12 13:50:23");//假设登录时间
    long mint = (startT - endT) / (1000);
    int hor = (int) mint / 3600;
    int secd = (int) mint % 3600;
    int day = (int) hor / 24;
    System.out.println("相差一共" + day + "天");
    System.out.println("相差一共" + hor + "小时");
    System.out.println("相差一共" + secd + "分钟");
    }}用Calendar也一样
      

  3.   

    楼主应该使用 joda-timeDate只是时间轴上的一个点,两时间点的差类型不是Date。
    joda-time 提供了Interval、Period、Duration表示一段时间
      

  4.   

    Date d1 = new Date();
    Date d2 = 数据库取得的Date d3 = new Date(d1.getTime() - d2.getTime());
    就这么简单
      要是不满足格式, 自己用SimpleDateFormat就KO了, 嘿嘿
      

  5.   

    楼上的害人啊  new Date() 返回的是从1970年开始的日期
      

  6.   

    8L说的对。6楼是思路,正在学joda。