如何在Android中将UTC日期与当前UTC时间进行比较?

时间:2016-08-16 15:15:29

标签: java android date time utc

我知道这个问题已经被问到但是解决方案要么已经过时,不支持Java 7,要么需要外部库(我希望避免使用它,因为我不希望另外一个库用于这个简单的用例)

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

1 个答案:

答案 0 :(得分:1)

他们中的大多数人使用第三方lib的原因是因为它们比Java提供的更稳定

以UTC格式获取当地时间:

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

输出:1月25日星期六11: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;
}