获取该月的第几天

据我所知,Java 8 中引入的 java.time 包使用起来要简单得多。然而,我正在 Java 7 中进行挑战,当我运行我的代码时,我很困惑到底错误是什么。我正在尝试在最后一行打印星期几(以文本形式)。但是,它在最后一次打印中打印 null。如果我将月份从 7 更改为 8,则会在最后一个打印语句中打印星期六。想知道我做错了什么。

新 GregorianCalendar 的月份参数输出为 7

2015 年澳大利亚东部时间 8 月 5 日星期三 00:00:00

4

无效的

新 GregorianCalendar 的月份参数输出为 8

2015 年澳大利亚东部时间 9 月 5 日星期六 00:00:00

7

周六

import java.util.Calendar;

import java.util.GregorianCalendar;

import java.util.Locale;


public class Test {



    public static void main(String[] args){

        Calendar calendar  = new GregorianCalendar(2015,7,5);

        System.out.println(calendar.getTime().toString());


        System.out.println(calendar.get(Calendar.DAY_OF_WEEK));



        System.out.println(calendar.getDisplayName(calendar.get(Calendar.DAY_OF_WEEK),Calendar.LONG, Locale.getDefault()));



    }

}


牧羊人nacy
浏览 85回答 1
1回答

慕森王

你是对的,你不应该GregorianCalendar在 2019 年使用。在 Java 7 中也不应该使用。java.time(现代 Java 日期和时间 API)已向后移植。使用 ThreeTen 向后移植。请参阅底部的链接。    LocalDate date = LocalDate.of(2019, Month.AUGUST, 5);         DayOfWeek dow = date.getDayOfWeek();     System.out.println(dow.getDisplayName(TextStyle.SHORT, Locale.ENGLISH));输出是:我的你的代码出了什么问题?你曾经想要:    System.out.println(calendar.getDisplayName(Calendar.DAY_OF_WEEK,Calendar.LONG, Locale.getDefault()));第一个参数getDisplayName是字段代码,例如DAY_OF_WEEK. 当传递该字段的实际值时,您可能会冒给它一个无效值的风险,在这种情况下该方法会返回null(这可能会令人困惑 - 感谢 Kevin Andersson 承认这是年度轻描淡写 (;->)!)。字段 4 是WEEK_OF_MONTH。该月的星期没有名称,只有数字,这就是为什么没有字符串表示形式适用于该字段。字段 7 是DAY_OF_WEEK,因此您在第二种情况(8 = 九月)中得到预期结果纯属巧合。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java