Java 获得每月的第二天

Java 获得每月的第二天,java,calendar,Java,Calendar,我知道Java8中引入的java.time包使用起来要简单得多。然而,我在Java 7中做了一个挑战,当我运行我的代码时,我正在绞尽脑汁想错误是什么。我试图在最后一行打印星期几(文本)。但是,它在最后一次打印时打印空值。如果我将月份从7改为8,它将在最后一个打印语句中打印星期六。不知道我做错了什么 新GregorianCalendar的月参数为7的输出 2015年8月5日星期三00:00:00美国东部时间 四, 空的 新GregoriaCalendar的月参数为8的输出 2015年9月5日星期六

我知道Java8中引入的java.time包使用起来要简单得多。然而,我在Java 7中做了一个挑战,当我运行我的代码时,我正在绞尽脑汁想错误是什么。我试图在最后一行打印星期几(文本)。但是,它在最后一次打印时打印空值。如果我将月份从7改为8,它将在最后一个打印语句中打印星期六。不知道我做错了什么

新GregorianCalendar的月参数为7的输出 2015年8月5日星期三00:00:00美国东部时间

四,

空的

新GregoriaCalendar的月参数为8的输出 2015年9月5日星期六00:00:00东部时间

七,

星期六

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


    }
}

您不应该在2019年使用
GregoriaCalendar
,这是正确的。Java7中也没有。现代java日期和时间API java.time已经进行了后端口。使用三个十个后端口。请参阅底部的链接

    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\u OF u WEEK
的字段代码。当传递该字段的实际值时,您可能会给它一个无效的值,在这种情况下,该方法返回
null
(这可能会让人困惑-感谢Kevin Andersson承认这是今年的轻描淡写(;->)!)

字段4是
周/月
。一个月的星期没有名称,只有数字,这就是为什么没有字符串表示法适用于此字段。字段7是一周中的第二天,因此在第二种情况下(9月8日)获得预期结果只是巧合

链接
  • 解释如何使用java.time
  • ,其中首先描述了
    java.time
  • ,java.time的后端口到Java6和Java7(JSR-310为三十)
  • ,Android版Three Ten Backport
  • ,解释得非常透彻

这段时间是否恰好是夏时制时间的变化?请尝试
calendar.getDisplayName(calendar.DAY\u OF u WEEK,…)
而不是
calendar.getDisplayName(calendar.get(calendar.DAY\u OF u WEEK),…)
Andy Turner-我的系统时间是悉尼。所以现在是夏令时。我不确定这是否就是你想要的。杰斯珀-谢谢,这很有效。”…**可能会让人困惑“?年度轻描淡写(;->)!感谢Ole V.V.提供的详细信息。我不能使用任何其他外部JAR,因为它是一个在线编辑器,无法导入。但是我已经按照建议对Calendar.getDisplayName()的第一个参数进行了更改,并且成功了。