Android比较纪元时间和今天日期并输出差异

时间:2016-12-06 06:52:32

标签: java android date time epoch

我需要计算到期日差异。

我将得到这个纪元时间:

  

1481410800(2016年12月6日(14:42))

现在我想计算到期日之前的天数(1481410800)

Calendar now = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy (HH:mm)", Locale.getDefault());


//Expiry Date
        long unixSecondsExpiry = 1481410800; //unixSeconds
        Date expiryDate = new Date(unixSecondsExpiry*1000L);



        long currentDate = now.get(Calendar.SECOND);

        long diff = unixSecondsExpiry - currentDate;
        long days = diff / (24l * 60l * 60l * 1000l);




        String formattedExpiryDate = sdf.format(expiryDate);
        String formattedDateNow = sdf.format(new Date());

        Log.w("RUNTEST", "formattedDateNow: " + formattedDateNow);
        Log.w("RUNTEST", "formattedExpiryDate: " + formattedExpiryDate);
        Log.w("RUNTEST", "days: " + days);

我持续17天,但应该是5天,直至到期。

  

RUNTEST:formattedDateNow:2016年12月6日(14:42)

     

RUNTEST:formattedExpiryDate:2016年12月11日(07:00)

     

RUNTEST:天:17

1 个答案:

答案 0 :(得分:0)

您正在使用new Date()

String formattedDateNow = sdf.format(new Date());

但计算正在使用

long currentDate = now.get(Calendar.SECOND);

为什么不使用

long currentDate = new Date().getTime ();

修改

get从日历中获取SECONDS只是获取当前的秒计数器

  

获取和设置的字段编号,表示分钟内的第二个。   例如,在10:04:15.250 PM,SECOND是15。