2016-08-16 116 views
-1

我知道这个问题已被问到,但解决方案或是过时的,不支持Java 7或需要一个外部库(我希望避免,因为我不希望这个简单的用例另一个库)。如何比较UTC日期和Android中的当前UTC时间?

但基本上我有2个日期来自我的数据库和日期是UTC。我想以UTC获取设备的当前时间,并检查当前时间是否在开始日期和结束日期之间。目前,我将Db中的数据库日期作为UTC获取到手机,但当前时间与设备的时区一致,并且比较结果是错误的。

+3

的[?我怎样才能在UTC或GMT Java中的当前日期和时间]可能的复制(http://stackoverflow.com/questions/308683/如何获取当前的日期和时间在utc或gmt在java) –

+1

如果你不提供一些上下文的代码,这将是一个难以回答的问题。我们不知道你是否正在处理字符串,Java日期,......这似乎是一个纯粹的Java问题,所以Android标签可能不需要。 – EJK

回答

1

大部分都是使用第三方lib中,因为他们更稳定的又是什么Java正在提供

获取本地时间UTC原因:

TimeZone.setDefault(TimeZone.getTimeZone("UTC")); 
Calendar cal_Two = Calendar.getInstance(TimeZone.getTimeZone("UTC")); 
System.out.println(cal_Two.getTime()); 

输出:星期六11年1月25日: 15:29 UTC 2014

转换字符串日期:

String startDateString = "06/27/2007"; 
DateFormat df = new SimpleDateFormat("MM/dd/yyyy"); 
Date startDate; 
try { 
    startDate = df.parse(startDateString); 
    String newDateString = df.format(startDate); 
    System.out.println(newDateString); 
} catch (ParseException e) { 
    e.printStackTrace(); 
} 

查找日期之间的差异:

{ 
     Date dt2 = new DateAndTime().getCurrentDateTime(); 

     long diff = dt2.getTime() - dt1.getTime(); 
     long diffSeconds = diff/1000 % 60; 
     long diffMinutes = diff/(60 * 1000) % 60; 
     long diffHours = diff/(60 * 60 * 1000); 
     int diffInDays = (int) ((dt2.getTime() - dt1.getTime())/(1000 * 60 * 60 * 24)); 

     if (diffInDays > 1) { 
      System.err.println("Difference in number of days (2) : " + diffInDays); 
      return false; 
     } else if (diffHours > 24) { 

      System.err.println(">24"); 
      return false; 
     } else if ((diffHours == 24) && (diffMinutes >= 1)) { 
      System.err.println("minutes"); 
      return false; 
     } 
     return true; 
} 
+0

非常感谢你!最后的代码snippit做了我所需要的 –

+1

@JaySyko欢迎。接下来尝试更具体,以便我们能够以更好更快的方式为您提供帮助! :) 祝你今天愉快! – Smit

相关问题