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

获取星期几的开始日期(可配置的星期几开始日期)

刘阳荣
2023-03-14
问题内容

我有当前日期,还有一个常数,它指示星期几。我想基于该常数获取一周的开始日期。如果我将一周的第一天硬编码为星期一(或其他任何东西),那么这很简单。但是一周的第一天一直在变化。因此,我不想在每次更改第一天时都更改代码。

这是我尝试使用Java的Calendar的方法:

public static Date getLastWeekdayDate()
{
    Calendar calendar = new GregorianCalendar();
    int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
    int daysToSubtractFromCurrentDate = 0;

    switch (dayOfWeek)
    {
    case Calendar.WEDNESDAY:
        daysToSubtractFromCurrentDate = 4;
        break;

    case Calendar.THURSDAY:
        daysToSubtractFromCurrentDate = 5;
        break;

    case Calendar.FRIDAY:
        daysToSubtractFromCurrentDate = 6;
        break;

    case Calendar.SATURDAY:
        daysToSubtractFromCurrentDate = 0;
        break;

    case Calendar.SUNDAY:
        daysToSubtractFromCurrentDate = 1;
        break;

    case Calendar.MONDAY:
        daysToSubtractFromCurrentDate = 2;
        break;

    case Calendar.TUESDAY:
        daysToSubtractFromCurrentDate = 3;
        break;
    }

    calendar.add(Calendar.DATE, -daysToSubtractFromCurrentDate);
    calendar.set(Calendar.AM_PM, Calendar.AM);
    calendar.set(Calendar.MINUTE, 0);
    calendar.set(Calendar.SECOND, 0);
    calendar.set(Calendar.HOUR, 0);
    calendar.set(Calendar.MILLISECOND, 0);

    return calendar.getTime();
}

我想获取一周的开始日期。上面的函数返回星期的第一天,并且星期开始日期被硬编码为星期六。每当星期开始日期以上的要求发生变化时,我都必须更改代码。


问题答案:

我使用以下方法

/** 1 = Sunday, 2 = Monday, 3 = Tuesday, 4 = Wednesday, 5 = Thursday,
* 6 = Friday, 7 = Saturday
*/
public static Date getFirstDayOfWeekDate(int firstDay)
{
    // Calculate the date of the first day of the week

    // First get the today's date
    Calendar c = new GregorianCalendar();

    // Now set the day of week to the first day of week
    while (c.get(Calendar.DAY_OF_WEEK) != firstDay)
    {
        c.add(Calendar.DAY_OF_MONTH, -1);
    }

    return c.getTime();
}


 类似资料:
  • 问题内容: 如果可能的话,在以下情况下,我希望使用joda或非joda解决方案 假设我的一周从2012年5月2日开始,给定的当前日期为02/22/2011。我需要计算给定当前日期的星期开始和结束日期。因此,我的解决方案的星期应该从02/19开始,而星期在02/25结束。为简单起见,我将我的工作日设置为02/05/2011,但是可能是任何一天,我的工作日始终为7天。 我现有的代码如下,但似乎无法按预

  • 问题内容: 我目前有此代码: 这是Date对象的扩展。 我需要做同样的事情,但是让日历返回我从星期一开始而不是星期日的一周中的几天。 问题答案: 您只需要使用iso8601日历获取一周中的第一天,其中第一个工作日为星期一,并添加0至6天。尝试这样:

  • 问题内容: 如何获得当前一周的星期一和星期五的日期? 我有以下代码,但是如果当前日期是星期日或星期六,则它将失败。 问题答案: 这些strtotime输入效果很好: 您需要做的就是将逻辑包装在一些if语句中。

  • 本文向大家介绍asp中获取日期为星期几的方法,包括了asp中获取日期为星期几的方法的使用技巧和注意事项,需要的朋友参考一下 测试代码如下,请使用IE运行本示例 WEEKDAY 用途:返回某日期的星期数。在默认情况下,它的值为1(星期天)到7(星期六)之间的一个整数。 Weekday是Visual Basic和VBS中的一个函数,功能返回代表一星期中某天的整数。 语法 参数 Weekday 函数的语

  • 本文向大家介绍JavaScript获取当前日期是星期几的方法,包括了JavaScript获取当前日期是星期几的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript获取当前日期是星期几的方法。分享给大家供大家参考。具体如下: JavaScript获得当前日期是星期几,主要通过getDay函数获得当前日期是一个星期的第几天 希望本文所述对大家的javascript程序设计有

  • 问题内容: 我想根据LocalDate.now()获取一周中第一天的日期。JodaTime可以进行以下操作,但似乎已从Java 8的新Date API中删除。 我无法调用“ withDayOfWeek()”,因为它不存在。 所以我的问题是: 如何根据某些LocalDate获取星期几的日期? 问题答案: 请注意,该表达式使用ISO-8601,因此它与语言环境无关,因此它总是向后跳到上一个星期一(或保