使用时区java / android查找两个日期之间的差异

时间:2015-04-17 04:43:47

标签: java android

我试图找到两个带有时区的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;
}

但这会在几分钟内给出负值。这种方法有什么问题。请建议。

希望能在这里找到解决方案。 提前致谢, 沙拉斯。

2 个答案:

答案 0 :(得分:0)

当你使用Android时,你无法使用Java 8及其新的时间api所以我会使用Joda-time - 一个外部库来重新编写时间。

计算之间的示例:

Seconds.between(startDate, endDate);

此处有更多详情:joda

答案 1 :(得分:0)

GMT是世界上任何地方的时间。 GMT时间码显示GMT与您当地时间之间的差异。所以理论上,

如果您当地的时间代码为+/-" GMT 5.00" GMT和您当地时间之间的差异= 5 * 60分钟