Android 日期不正确
Android date is incorrect
我正在使用 Calendar
class 来获取年月日:
Calendar calendar = Calendar.getInstance();
this.current_year = calendar.get(Calendar.YEAR);
this.current_month = calendar.get(Calendar.MONTH);
this.current_day = calendar.get(Calendar.DAY_OF_MONTH);
Toast.makeText(this.context, this.current_year + "-" + this.current_month + "-" + this.current_day, Toast.LENGTH_SHORT).show();
今天是 2021 年 12 月 11 日 (2021-12-11)。但是 toast 警报显示 2021-11-11。我也尝试将日历时间设置为新的 Date
class 但仍然错误
Calendar.MONTH returns 值从 0 到 11。(例如 0 代表 1 月,1 代表 2 月)。因此,要显示当前月份值,您必须在 current_month 中 +1。你最后的吐司看起来像,
Toast.makeText(this.context, this.current_year + "-" + (this.current_month+1) + "-" + this.current_day, Toast.LENGTH_SHORT).show();
它会显示你想要的结果。
tl;博士
I am using Calendar
class
不要。
仅使用 java.time classes.
LocalDate.now( ZoneId.systemDefault() ).getYear()
2021
详情
正确。
此外,永远不要使用Calendar
。那个可怕的 class 是由不了解日期时间处理的人构建的。连同 Date
和 SimpleDateFormat
,这些 classes 在几年前被现代的 java.time classes 所取代。
指定时区以确定日期。对于任何给定时刻,日期在全球各地因时区而异。在日本可能是明天,而在加拿大是昨天。
ZoneId z = ZoneId.of( "Asia/Tokyo" ) ;
LocalDate ld = LocalDate.now( z ) ;
询问零件。
与旧版 classes 不同,java.time classes 使用合理的编号。 2021 年是 2021 年,依此类推。一月到十二月的月份是 1-12。
int year = ld.getYear() ;
int month = ld.getMonthValue() ;
int day = ld.getDayOfMonth() ;
我正在使用 Calendar
class 来获取年月日:
Calendar calendar = Calendar.getInstance();
this.current_year = calendar.get(Calendar.YEAR);
this.current_month = calendar.get(Calendar.MONTH);
this.current_day = calendar.get(Calendar.DAY_OF_MONTH);
Toast.makeText(this.context, this.current_year + "-" + this.current_month + "-" + this.current_day, Toast.LENGTH_SHORT).show();
今天是 2021 年 12 月 11 日 (2021-12-11)。但是 toast 警报显示 2021-11-11。我也尝试将日历时间设置为新的 Date
class 但仍然错误
Calendar.MONTH returns 值从 0 到 11。(例如 0 代表 1 月,1 代表 2 月)。因此,要显示当前月份值,您必须在 current_month 中 +1。你最后的吐司看起来像,
Toast.makeText(this.context, this.current_year + "-" + (this.current_month+1) + "-" + this.current_day, Toast.LENGTH_SHORT).show();
它会显示你想要的结果。
tl;博士
I am using
Calendar
class
不要。
仅使用 java.time classes.
LocalDate.now( ZoneId.systemDefault() ).getYear()
2021
详情
此外,永远不要使用Calendar
。那个可怕的 class 是由不了解日期时间处理的人构建的。连同 Date
和 SimpleDateFormat
,这些 classes 在几年前被现代的 java.time classes 所取代。
指定时区以确定日期。对于任何给定时刻,日期在全球各地因时区而异。在日本可能是明天,而在加拿大是昨天。
ZoneId z = ZoneId.of( "Asia/Tokyo" ) ;
LocalDate ld = LocalDate.now( z ) ;
询问零件。
与旧版 classes 不同,java.time classes 使用合理的编号。 2021 年是 2021 年,依此类推。一月到十二月的月份是 1-12。
int year = ld.getYear() ;
int month = ld.getMonthValue() ;
int day = ld.getDayOfMonth() ;