-1

我目前正在使用以下行来实现时间:System.currentTimeInMilis。我注意到它没有考虑时区,或者它与它自己的android手机不匹配,而在模拟器上它确实匹配.s 那么还有另一种方法来获取它自己的android时钟吗?那么当用户调整他的手机内置时钟时,它也会影响它吗?

float getTime()
    {
        Calendar cal = new GregorianCalendar();
        cal.setTimeInMillis(System.currentTimeMillis());
        cal.setTimeZone(TimeZone.getDefault());
        return cal.getTimeInMillis();
    }
4

1 回答 1

1

阅读currentTimeMillis的文档。它一个时区,恰好是 UTC(这是 Unix 时间戳的默认值)。

如果要将其转换为不同的时区,可以使用 Java Calendar 和 TimeZone 类:

Calendar cal = new GregorianCalendar();
cal.setTimeInMillis(System.currentTimeMillis());
cal.setTimeZone(TimeZone.getDefault());

或者,您可以只创建一个新的 GregorianCalendar 实例。默认情况下,它的时区将与本地时区(在设备上设置)匹配,时间将设置为“现在”。

还有其他方法可以根据当前时区和语言环境作为字符串检索当前时间。看看DateUtils

编辑解释日历的用法

阅读 Calendar.getTimeMillis() 的文档。该方法再次返回恰好具有 UTC 时区的 Unix 时间戳。

您必须使用 Calendar.get() 方法来获取正确的值。请参阅以下示例以通过日历对象获取正确时区的当前时间:

int hour = cal.get(Calendar.HOUR_OF_HAY);

阅读日历的文档。有很多字段,例如 HOUR_OF_DAY,可以帮助您获取年、月、分、秒等值。

于 2012-07-14T19:11:50.520 回答