簡體   English   中英

查找帶有時區的兩個日期之間的時差java / android

[英]Find Diffrence between two dates with time zones java/android

我試圖找到兩個帶時區的Java日期之間的差異。 時區為格林尼治標准時間(GMT)。服務器以這種格式發送時間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;
}

但這在數分鍾內給出負值。 這種方法有什么問題。 請提出建議。

希望可以在這里找到解決方案。 在此先感謝您,莎拉。

當您使用Android時,您很明顯不能使用Java 8及其新的時間api,因此我建議使用Joda-time(時間的外部庫)。

計算之間的示例:

Seconds.between(startDate, endDate);

此處有更多詳細信息: joda

GMT是世界上任何地方的時間。 GMT時間代碼顯示GMT與您當地時間之間的時差。 所以從理論上講

如果您當地的時間代碼是GMT與您當地的時間之間的+/-“ GMT 5.00” = 5 * 60分鍾

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM