【发布时间】:2022-08-09 00:57:30
【问题描述】:
所以我在我的 android 应用程序中有一个 DateFormat 函数,它计算并显示已发布在我的数据库中的“数据”的日期和时间。果然,它显示在我的应用程序上,但不是正确的时间。 \"GMT\" 不是正确的,并且 \"GMT+8\" 不起作用,我也尝试过 \"Asia/Manila\" 但无济于事。任何帮助表示赞赏。
private String calculateTimeAgo(String date) {
SimpleDateFormat sdf = new SimpleDateFormat(\"dd-M-yyyy hh:mm:ss\");
sdf.setTimeZone(TimeZone.getTimeZone(\"Manila\"));
try{
long time = sdf.parse(date).getTime();
long now = System.currentTimeMillis();
CharSequence ago =
DateUtils.getRelativeTimeSpanString(time, now, DateUtils.MINUTE_IN_MILLIS);
return ago+\"\";
}
catch (ParseException e)
{
e.printStackTrace();
}
return \"\";
}
-
基本上,最好不要使用
Date和SimpleDateFormat。 javadoc 不清楚,但是当您调用DateFormat.parse时,您之前设置的时区将被覆盖。它不能确定用于解析日期的区域。使用 Java 8+ 日期/时间 API:baeldung.com/java-8-date-time-intro
标签: java android android-studio