0

我希望下面的代码能够在我的本地时区(美国东部标准时间)中为我呈现正确的时间,但我一直让时间比当前时间早 5 小时。我的userTimeZoneOffset值是 -300,这是我的时区与 UTC 的正确偏移分钟数。dateAndTimeFormat为我设置为“MM/dd/yyyy h:mm a”。

如何获得currentDateAndTime下面的变量以根据 UTC 而不是我当前的时区进行计算?

String dateAndTimeFormat = i18nUtil.getValue(locale, "dateAndTimeFormat");
SimpleDateFormat sdf = new SimpleDateFormat(dateAndTimeFormat);
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
if (userTimeZoneOffset != null) {
    calendar.add(Calendar.MINUTE, userTimeZoneOffset);
}
String currentDateAndTime = sdf.format(calendar.getTime());
return currentDateAndTime;
4

1 回答 1

1

正如我在评论中提到的,您应该查看 Joda-Time 而不是 Java DateTime/Calendar 库。

要获取 UTC 的当前时间,您应该导入以下包并调用以下代码行:

import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;

DateTime utcDateTime = new DateTime(DateTimeZone.UTC);

看起来您还希望从收到的 DateTime 中减去时间。为此,您将调用以下方法:

DateTime estDateTime = utcDateTime.minusHours(5);

乔达时间:http ://www.joda.org/joda-time/

于 2013-11-11T22:07:36.043 回答