This question already has answers here:
How can I convert a Unix timestamp to DateTime and vice versa?
(18个回答)
3年前关闭。
我需要计算一个有效期差异。
我会得到这个时代的时间:
1481410800(2016年12月6日(14:42))
现在我想计算到到期日期的天数(1481410800)
我不断获得17天,但应该到到期为止还有5天。
RUNTEST:formattedDateNow:2016年12月6日(14:42)
RUNTEST:formattedExpiryDate:2016年12月11日(07:00)
RUNTEST:天数:17
但计算使用
为什么不只是使用
编辑
从日历中
get和set的字段号指示分钟内的秒。
例如,在10:04:15.250 PM,秒是15。
(18个回答)
3年前关闭。
我需要计算一个有效期差异。
我会得到这个时代的时间:
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
最佳答案
在这里,您使用的是new Date()
String formattedDateNow = sdf.format(new Date());
但计算使用
long currentDate = now.get(Calendar.SECOND);
为什么不只是使用
long currentDate = new Date().getTime ();
编辑
从日历中
get
设置SECONDS只是获取当前的秒计数器get和set的字段号指示分钟内的秒。
例如,在10:04:15.250 PM,秒是15。
10-06 02:12