我知道这个问题已经被问到但是解决方案要么已经过时,不支持Java 7,要么需要外部库(我希望避免使用它,因为我不希望另外一个库用于这个简单的用例)
但基本上我有2个日期来自我的数据库,日期是UTC。我想以UTC格式获取设备的当前时间,并检查当前时间是否在开始日期和结束日期之间。目前我从Db到手机的数据库日期为UTC,但当前时间是设备的时区,比较错误。
答案 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;
}