java.time
ZonedDateTime nowInUk = ZonedDateTime.now(ZoneId.of("Europe/London"));
int hour = nowInUk.getHour();
int minutes = nowInUk.getMinute();
int seconds = nowInUk.getSecond();
int day = nowInUk.getDayOfMonth();
Month month = nowInUk.getMonth();
int year = nowInUk.getYear();
System.out.println("hour = " + hour + ", minutes = " + minutes + ", seconds = " + seconds
+ ", day = " + day + ", month = " + month + ", year = " + year);
当我刚才运行这个片段时,它打印了:
小时 = 3,分钟 = 41,秒 = 15,日 = 5,月 = 10 月,年 = 2018
ZonedDateTime
很大程度上取代了过时的Calendar
类。
你的代码出了什么问题?
英国时间的时区 ID 是Europe/London
. 在您使用的代码中UTC
,这是另一回事,至少有时会给您带来不同的结果。英国时间在某些年份的某些年份与 UTC 重合,但不是在今年的这个时候。所以你的时间比英国时间早一小时。
还c1.get(Calendar.HOUR)
为您提供上午或下午从 1 到 12 的时间,我认为这不是您想要的。
问题:我可以java.time
在安卓上使用吗?
是的,java.time
在 Android 设备上运行良好。它只需要至少Java 6。
- 在 Java 8 及更高版本以及新的 Android 设备上(据我所知,从 API 级别 26 开始)新的 API 是内置的。
- 在 Java 6 和 7 中获得 ThreeTen Backport,新类的后向端口(ThreeTen 用于 JSR 310,现代 API 首次被描述的地方)。
- 在(较旧的)Android 上,使用 ThreeTen Backport 的 Android 版本。它被称为 ThreeTenABP。
org.threeten.bp
确保从包和子包中导入日期和时间类。
链接