gpt4 book ai didi

java - Android 的 Calendar.Day_Of_Month 是基于零的吗?

转载 作者:搜寻专家 更新时间:2023-11-01 07:43:10 24 4
gpt4 key购买 nike

根据 android 文档,Day_Of_Month 是基于 1 的(即“1”表示该月的第一天)(参见 https://developer.android.com/reference/java/util/Calendar#DAY_OF_MONTH)。

但是,当我在我的两台 Android 设备上运行以下代码时,我得到的结果是“2018-01-02”。我错过了什么吗?

Calendar cal = new GregorianCalendar();
TimeZone tzone = TimeZone.getTimeZone("GMT");
cal.setTimeZone(tzone);

cal.set(Calendar.HOUR, 12);
cal.set(2018, 0, 1);

DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
String date = df.format(cal.getTime());

我不只是假设文档有误的原因是我有一些证据表明我的一个客户的设备将日期报告为“2018-01-01”

最佳答案

实际上,您正在做三件会影响结果的事情。

(1) 您正在使用 Calendar.HOUR,这是 12 小时制!

Java 文档:

HOUR:
Field number for get and set indicating the hour of the morning or afternoon. HOUR is used for the 12-hour clock (0 - 11). Noon and midnight are represented by 0, not by 12. E.g., at 10:04:15.250 PM the HOUR is 10.

您要使用的是 24 小时制的 Calendar.HOUR_OF_DAY!

Java 文档:

HOUR_OF_DAY:
Field number for get and set indicating the hour of the day. HOUR_OF_DAY is used for the 24-hour clock. E.g., at 10:04:15.250 PM the HOUR_OF_DAY is 22.

(2) 您将时间设置为 12。这会在您使用 Calendar.HOUR 时引起一些问题。

(3) 您将 TimeZone“GMT”与 Calendar.HOUR 设置结合使用将导致日期根据实际时区递增或递减用户位于。

示例:

我在 CST 时区,我运行了这段代码:

Calendar cal = new GregorianCalendar();
cal.set(2018, 0, 1);
int h = 0;

cal.set(Calendar.HOUR_OF_DAY, h);
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");
String date1 = df.format(cal.getTime());
Log.e(TAG, "date1 = " + date1)

cal.set(Calendar.HOUR, h);
TimeZone tzone = TimeZone.getTimeZone("GMT");
cal.setTimeZone(tzone);
String date2 = df.format(cal.getTime());
Log.e(TAG, "date2 GMT = " + date2)

并在 h = 0 时得到这些结果:

date1 = 2018-01-01 00:54
date2 GMT = 2017-12-31 18:54

设置 h = 12:

date1 = 2018-01-01 12:54
date2 GMT = 2018-01-01 18:54

七小时后我会得到:

date1 = 2018-01-01 19:54
date2 GMT = 2018-01-02 01:54

关于java - Android 的 Calendar.Day_Of_Month 是基于零的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50977937/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com