0

我有一个仅供英国和爱尔兰人使用的 Android 应用程序,并且没有计划在海外使用此应用程序。

在应用程序中,我存储各种事物的日期,虽然我不需要包括一天中的时间在内的完整时间戳,但我只需要日期。

为了可以轻松地比较日期,我一直在创建日历对象并清除时间值,并使用其中的毫秒数存储在数据库中。

public Calendar clearCalTime(long l) {
    Calendar cal = Calendar.getInstance();
    cal.setFirstDayOfWeek(Calendar.MONDAY);
    cal.setTimeInMillis(l);
    cal.clear(Calendar.HOUR);
    cal.clear(Calendar.HOUR_OF_DAY);
    cal.clear(Calendar.MINUTE);
    cal.clear(Calendar.SECOND);
    cal.clear(Calendar.MILLISECOND);
    return cal;
}

问题是如果用户更改时区,由于某种原因日期开始混乱,例如将内容保存到错误的日期。时区可以是任何东西,我无法控制用户设置的内容。

我尝试将时区设置为 UTC,但这也不起作用。有什么办法可以忽略时区?

4

1 回答 1

0

没有。您将不得不设置 TimeZone 进出存储。

你需要这样做:

Calendar c = new GregorianCalendar(TimeZone.getTimeZone("GMT"));

在您的代码中使其保持一致。

请参阅此 SO:Java.util.Calendar - 自 1970 年 1 月 1 日以来的毫秒数

或者在处理复杂的日期/时间数学时使用Joda Time 。

于 2012-08-28T15:33:02.573 回答