【问题标题】:How to to compare UTC dates with current UTC time in Android?如何将 UTC 日期与 Android 中的当前 UTC 时间进行比较?
【发布时间】:2016-08-16 15:15:28
【问题描述】:

我知道有人问过这个问题,但解决方案要么已过时,Java 7 不支持,要么需要外部库(我希望避免这种情况,因为我不想要另一个库用于这个简单的用例) .

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

【问题讨论】:

标签: java android date time utc


【解决方案1】:

他们中的大多数使用 3rd 方库的原因是因为它们比 Java 提供的更稳定

以 UTC 获取本地时间:

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

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

将字符串转换为日期:

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;
}

【讨论】:

  • 非常感谢!!最后的代码片段完全符合我的需要
  • @JaySyko 欢迎您。接下来尝试更具体,以便我们以更好更快的方式为您提供帮助! :) 祝你有美好的一天!
猜你喜欢
  • 2015-08-06
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 2021-11-17
  • 1970-01-01
  • 1970-01-01
  • 2011-11-14
相关资源
最近更新 更多