我试图找到两个带有时区的java日期之间的区别。 时区为GMT.Sever以此格式发送时间 2015-04-08 11:17:53 -0400 。我想找出服务器发送日期格式和当前android系统时间之间的差异(以分钟为单位)。
我发现像这样的差异.c_date是服务器日期格式(2015-04-08 11:17:53 -0400)
public static long getDiffrenceBetween(String c_date,String old_date) {
System.out.println("Cuttent Time :::"+c_date);
System.out.println("Saved/Old Time :::"+old_date);
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z");
format.setTimeZone(TimeZone.getTimeZone("GMT"));
Date d1 = null;
Date d2 = null;
long min_In_Minutes=0;
try {
d1 = format.parse(c_date);
d2 = format.parse(old_date);
// in milliseconds
long diff = d1.getTime() - d2.getTime();
min_In_Minutes = TimeUnit.MILLISECONDS.toMinutes(diff);
System.out.println("Diff in Minutes :::"+min_In_Minutes);
long diffSeconds = diff / (1000 % 60);
long diffMinutes = diff / (60 * 1000) % 60;
long diffHours = diff / (60 * 60 * 1000) % 24;
long diffDays = diff / (24 * 60 * 60 * 1000);
System.out.println(diffDays + " days, ");
System.out.println(diffHours + " hours, ");
System.out.println(diffMinutes + " minutes, ");
System.out.println(diffSeconds + " seconds.");
} catch (Exception e) {
e.printStackTrace();
}
return min_In_Minutes;
}
但这会在几分钟内给出负值。这种方法有什么问题。请建议。
希望能在这里找到解决方案。 提前致谢, 沙拉斯。
答案 0 :(得分:0)
当你使用Android时,你无法使用Java 8及其新的时间api所以我会使用Joda-time - 一个外部库来重新编写时间。
计算之间的示例:
Seconds.between(startDate, endDate);
此处有更多详情:joda
答案 1 :(得分:0)
GMT是世界上任何地方的时间。 GMT时间码显示GMT与您当地时间之间的差异。所以理论上,
如果您当地的时间代码为+/-" GMT 5.00" GMT和您当地时间之间的差异= 5 * 60分钟