当前位置: 首页 > 面试题库 >

使用Java获取本月的最后一个星期五

巫马承德
2023-03-14
问题内容

我正在一个项目中,要求将日期计算为给定月份的最后一个星期五。我认为我有一个仅使用标准Java的解决方案,但我想知道是否有人知道更简洁或更有效的方法。以下是我今年测试的内容:

    for (int month = 0; month < 13; month++) {
        GregorianCalendar d = new GregorianCalendar();
        d.set(d.MONTH, month);
        System.out.println("Last Week of Month in " + d.getDisplayName(d.MONTH, Calendar.LONG, Locale.ENGLISH) + ": " + d.getLeastMaximum(d.WEEK_OF_MONTH));
        d.set(d.DAY_OF_WEEK, d.FRIDAY);
        d.set(d.WEEK_OF_MONTH, d.getActualMaximum(d.WEEK_OF_MONTH));
        while (d.get(d.MONTH) > month || d.get(d.MONTH) < month) {
            d.add(d.WEEK_OF_MONTH, -1);
        }
        Date dt = d.getTime();
        System.out.println("Last Friday of Last Week in  " + d.getDisplayName(d.MONTH, Calendar.LONG, Locale.ENGLISH) + ": " + dt.toString());
    }

问题答案:

根据marked23的建议:

public Date getLastFriday( int month, int year ) {
   Calendar cal = Calendar.getInstance();
   cal.set( year, month + 1, 1 );
   cal.add( Calendar.DAY_OF_MONTH, -( cal.get( Calendar.DAY_OF_WEEK ) % 7 + 1 ) );
   return cal.getTime();
}


 类似资料:
  • 问题内容: 我正在尝试编写这样的日历功能 是整数(1、2、3 …),$ day是一天(Sun,Mon,…)或数字,以较容易的一个为准。方向有些混乱,因为它进行了不同的计算。 举个例子 它使用默认值,并获得5月的第一个星期日,即2009-05-03。如果我们打电话 ,它将返回5月的第二个最后一个星期日,即2009-05-24。 问题答案: 也许可以使其更快。。。 代码非常有趣。 请注意,前进1表示反

  • 我不知道上个月最后一个星期一的正确日期。我认为像在这个问题中那样计算它并不是绝对正确的,并且想要拒绝常数的算术运算。此代码按预期工作: 但是当我设置至1,在建造商主体的第二条指示中返回2月的第一个星期一。我希望函数在1月26日返回给我,但现在是2月2日。我认为这是因为2月1日是星期天,但例如,对于三月代码是正确的。 请帮帮我,我很困惑)

  • 问题内容: 我想获取特定月份/年份中第一个星期一的日期。 我有的: 我基本上有两个int变量,一个代表年份,一个代表月份。 我想要的是: 我想知道本月的第一个星期一,最好是一个int或Integer值。 例如: 我有2014年和1月(1月),这个月的第一个星期一是6号,所以我想返回6。 问题: 我以为可以做到这一点,但是在设置日历(仅提供年和月)时已经遇到了麻烦。此外,我不确定如何使用返回实际的月

  • 问题内容: 如标题所述,我一直坚持寻找一种方法来使用JavaScript或jQuery获取当月的第一天和最后一个日期,并将其格式设置为: 例如,对于11月,应为: 问题答案: 非常简单,不需要库: 或者您可能更喜欢: 编辑 一些浏览器会将20年视为两位数,因此: 给出1914年1月1日。为避免这种情况,请创建一个Date,然后使用 setFullYear 设置其值:

  • 问题内容: 寻找一种获取日期格式为“11/1/2009”的日期的方法,这将是下个月的第一个星期日。我想在10月的第一个星期日之后运行此查询,以获取下个月的第一个星期日。用T-SQL查询完成此操作的最佳方法是什么? 谢谢 问题答案: 试试这个: 编辑说明: 下个月的第一个月由以下表达式给出: 或方式:将1更改为2,可以将其修改为从现在起两个月的第一个月: 编辑:作为对@NissanFan和@Anth

  • 在评论中,这是我在ATM上的代码: Atm I有两个函数:一个可以将字符串转换为日历的星期数,另一个是我正在搜索的方法。目前它只处理今天的一周中的一天正确的,应该做的工作为一周中的每隔一天的部分是缺失的(评论与...)