gpt4 book ai didi

java - 获取该月的第几天

转载 作者:行者123 更新时间:2023-12-02 09:21:48 28 4
gpt4 key购买 nike

据我了解,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()));


}
}

最佳答案

你是正确的,你不应该使用 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));

输出是:

Mon

您的代码出了什么问题?

你想要:

    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 = 9 月)中得到预期结果纯属巧合。

链接

关于java - 获取该月的第几天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58643318/

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