[英]How can I get present months?
我试过
Calendar calendar= Calendar.getInstance();
System.out.println("use with command get time \"calendar.getTime()\" : "+calendar.getTime());
System.out.println("use with command get month \"calendar.get(Calendar.MONTH)\": "+calendar.get(Calendar.MONTH));
但我找不到正确的月份。
我怎样才能得到当前月份? 感谢阅读,抱歉我的英语不好。
java.time.LocalDate
您可以在下面使用 int 或 string 获取月份值
LocalDate.now().getMonthValue();
LocalDate.now().getMonth();
您还可以使用SimpleDateFormat
方法获取当前日期和时间。
在这里看到我的function我得到当前的日期和时间供你参考
private void getTime(TextView dateTime) {
Date date = new Date();
@SuppressLint("SimpleDateFormat") SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EE, d MMM yyyy HH:mm:ss aaa");
dateTime.setText(simpleDateFormat.format(date));
}
更多信息,您可以在这里参考android官方文档
以下是官方文档中的一些示例。 参考链接
SimpleDateFormat sdf = new SimpleDateFormat("MM");
Date date = new Date();
Log.d("MyTag", sdf.format(date));
这里MM
以 integer 形式表示月份 (dec ~ 12) 这里MMM
以字母表示月份 (Dec)
Sriram 的回答是正确的,并使用java.time.LocalDate
class 提供了现代解决方案。这里有一些更多的细节。
LocalDate#now
方法隐式使用 JVM 当前的默认时区。 时区很重要,因为对于任何给定时刻,时间以及日期在全球范围内都可能因时区而异。 在日本东京可能是“明天”,而在美国俄亥俄州托莱多可能是“昨天”。
ZoneId z = ZoneId.of( "Asia/Tokyo" ) ;
LocalDate today = LocalDate.now( z ) ;
如果您忽略传递ZoneId
object,则会自动应用 JVM 的当前默认时区。 这与显式传递默认值具有相同的效果。
LocalDate today = LocalDate.now( ZoneId.systemDefault() ) ;
我建议使用明确的方法来使您的意图一目了然。
Month
枚举 LocalDate#getMonth
方法返回Month
枚举 object。
Month month = LocalDate.now().getMonth() ;
如果您想生成文本来表示该值,您可以自动本地化。
Locale locale = Locale.CANADA_FRENCH ;
String output = month.getDisplayName( TextStyle.FULL , locale ) ;
十二月
您可以通过调用Locale.getDefault()
来访问 JVM 的当前默认语言环境。
Android 26+ 实现了java.time类。
对于早期的 Android,使用最新的工具通过“API 脱糖”访问大部分java.time功能。
如果查看 class java.util.Calendar
的源代码,您会发现以下常量:
/**
* Value of the {@link #MONTH} field indicating the
* twelfth month of the year in the Gregorian and Julian calendars.
*/
public static final int DECEMBER = 11;
因此calendar.get(Calendar.MONTH))
正确返回 11(十一)。
但是,Android 8(API 级别 26)添加了 class LocalDate ,应该使用它代替 class Calendar
。 请注意,class Calendar
包含日期和时间,而 class LocalDate
仅包含日期。 Class LocalDateTime
包含日期和时间。 还有 class LocalTime
。
根据now
[static] 方法的文档,在 class LocalDate
中:
从默认时区的系统时钟获取当前日期。
如果你想要当前月份,你可以调用方法getMonthValue
哪个......
获取从 1 到 12 的月份字段。
或者,您可以调用getMonth
方法,它...
使用
Month
枚举获取年月字段。
所以你的代码应该是:
java.time.LocalDate calendar = java.time.LocalDate.now();
System.out.println("calendar : " + calendar);
System.out.println("calendar.getMonth(): " + calendar.getMonth());
产生以下 output:
calendar : 2022-12-30
calendar.getMonth(): DECEMBER
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.