java 我怎样才能得到现在的月份?

zfciruhq  于 2023-01-01  发布在  Java
关注(0)|答案(5)|浏览(131)

我试过了

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));

但我找不到正确的月份。
this is my output
我怎样才能得到当前月份呢?谢谢你的阅读,抱歉我的英语不好。

nom7f22z

nom7f22z1#

一个月

您可以使用下面的命令获取int或string格式的月份值

LocalDate.now().getMonthValue();
LocalDate.now().getMonth();
8ehkhllq

8ehkhllq2#

还可以使用SimpleDateFormat方法获取当前日期和时间。
在这里看到我的函数我得到了当前的日期和时间供大家参考

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));
}

有关详细信息,请参阅official android documentation here

hrysbysz

hrysbysz3#

以下是官方文档中的一些示例。参考链接

SimpleDateFormat sdf = new SimpleDateFormat("MM");
Date date = new Date();
Log.d("MyTag", sdf.format(date));

其中MM表示整数形式的月份(dec ~ 12),MMM表示字母形式的月份(Dec)

efzxgjgh

efzxgjgh4#

Answer by Sriram是正确的,并且提供了使用java.time.LocalDate类的现代解决方案。
时区
LocalDate#now方法隐式使用JVM的当前默认时区。时区非常重要,因为对于任何给定时刻,时间以及日期都可能因地区而异。在日本东京,时间可能是“明天”,而在美国俄亥俄州州托莱多,时间可能是“昨天”。

ZoneId z = ZoneId.of( "Asia/Tokyo" ) ;
LocalDate today = LocalDate.now( z ) ;

如果省略传递ZoneId对象,JVM的当前默认时区将自动应用,这与显式传递默认时区具有相同的效果。

LocalDate today = LocalDate.now( ZoneId.systemDefault() ) ;

我建议你采用明确的方法,把你的意图说得清清楚楚。

Month枚举

方法LocalDate#getMonth返回一个Month枚举对象。

Month month = LocalDate.now().getMonth() ;

如果要生成表示该值的文本,可以自动本地化。

Locale locale = Locale.CANADA_FRENCH ;
String output = month.getDisplayName( TextStyle.FULL , locale ) ;

看这个code run at Ideone.com
德桑布雷
您可以通过调用Locale.getDefault()来访问JVM当前的默认语言环境。

安卓系统

Android 26+支持 java.time 类的实现。
对于早期的Android,使用最新的工具通过“API desugaring”访问大部分 java.time 功能。

eivnm1vs

eivnm1vs5#

如果查看类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)添加了类LocalDate,应使用该类来代替类Calendar。请注意,类Calendar同时包含日期和时间,而类LocalDate仅包含日期。类LocalDateTime同时包含日期和时间。
根据LocalDate类中[static]方法now的文档:
从默认时区的系统时钟获取当前日期。
如果你想要当前月份,你可以调用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());

其产生以下输出:

calendar           : 2022-12-30
calendar.getMonth(): DECEMBER

相关问题