我想知道特定月份/年份的第一个星期一的日期。
我所拥有的:
我基本上有两个int变量,一个代表年份,一个代表月份。
我想要的是:
我想知道这个月的第一个星期一,最好是整数或整数值。
例如:
我有2014年和1月,这个月的第一个星期一是6号,所以我想返回6号。
问题:
我原以为我可以用日历
做到这一点,但我在设置日历时遇到了问题,因为只有年份和月份可用。此外,我不知道如何使用日历
返回月份/年份的第一个星期一。
我已经试过了:
Calendar cal = Calendar.getInstance();
cal.set(this.getYear(),getMonth(), 1);
int montag = cal.getFirstDayOfWeek();
for( int j = 0; j < 7; j++ ) {
int calc = j - montag;
if( calc < 0 ) {
calc += 6;
}
weekDays[calc].setText(getDayString(calc));
}
首先,您应该了解java的最新版本,即JAVA8,熟悉JAVA8中的LocalDate
然后只通过下面的代码
public class Test {
public static void main(String[] args) {
LocalDate date=LocalDate.of(2014,1, 1);
for(int i=0;i<date.lengthOfMonth();i++){
if("Monday".equalsIgnoreCase(date.getDayOfWeek().toString())){
break;
}else{
date=date.plusDays(1);
}
}
System.out.println(date.getDayOfMonth());
}
}
getFirstDayOfWeek()
返回哪一天用作当前语言环境的开始。有些人认为第一天是星期一,有些人认为是星期天,等等。
看起来您只需将其设置为DAY_OF_WEEK=MONday
和DAY_OF_WEEK_IN_MONTH=1
,因为这将为您提供当月的第一个星期一。要对年份执行相同的操作,首先将MONTH
值设置为JANUARY
,然后重复上述操作。
例子:
private static Calendar cacheCalendar;
public static int getFirstMonday(int year, int month) {
cacheCalendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
cacheCalendar.set(Calendar.DAY_OF_WEEK_IN_MONTH, 1);
cacheCalendar.set(Calendar.MONTH, month);
cacheCalendar.set(Calendar.YEAR, year);
return cacheCalendar.get(Calendar.DATE);
}
public static int getFirstMonday(int year) {
return getFirstMonday(year, Calendar.JANUARY);
}
下面是一个测试它的简单JUnit:http://pastebin.com/YpFUkjQG
使用java.time
库,内置于Java8和TemporalAdouner中。请参阅教程。
import java.time.DayOfWeek;
import java.time.LocalDate;
import static java.time.temporal.TemporalAdjusters.firstInMonth;
LocalDate now = LocalDate.now(); //2015-11-23
LocalDate firstMonday = now.with(firstInMonth(DayOfWeek.MONDAY)); //2015-11-02 (Monday)
如果需要添加时间信息,可以使用任何可用的LocalDate
到LocalDateTime
转换,如
firstMonday.atStartOfDay() # 2015-11-02T00:00
我不知道上个月最后一个星期一的正确日期。我认为像在这个问题中那样计算它并不是绝对正确的,并且想要拒绝常数的算术运算。此代码按预期工作: 但是当我设置至1,在建造商主体的第二条指示中返回2月的第一个星期一。我希望函数在1月26日返回给我,但现在是2月2日。我认为这是因为2月1日是星期天,但例如,对于三月代码是正确的。 请帮帮我,我很困惑)
问题内容: 我想获取特定月份/年份中第一个星期一的日期。 我有的: 我基本上有两个int变量,一个代表年份,一个代表月份。 我想要的是: 我想知道本月的第一个星期一,最好是一个int或Integer值。 例如: 我有2014年和1月(1月),这个月的第一个星期一是6号,所以我想返回6。 问题: 我以为可以做到这一点,但是在设置日历(仅提供年和月)时已经遇到了麻烦。此外,我不确定如何使用返回实际的月
问题内容: 我正在尝试编写这样的日历功能 是整数(1、2、3 …),$ day是一天(Sun,Mon,…)或数字,以较容易的一个为准。方向有些混乱,因为它进行了不同的计算。 举个例子 它使用默认值,并获得5月的第一个星期日,即2009-05-03。如果我们打电话 ,它将返回5月的第二个最后一个星期日,即2009-05-24。 问题答案: 也许可以使其更快。。。 代码非常有趣。 请注意,前进1表示反
我正在尝试提出一个CRON表达式,它允许我在一个月内的每个星期一运行一个石英触发器,第一个除外。 参考文献: http://www.quartz-scheduler.org/documentation/quartz-2.x/tutorials/crontrigger.html https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron
我试图弄清楚如何确定特定的星期一是给定月份的第一个、第二个、第三个还是第四个星期一。我已经弄清楚了如何使用LocalDate类获取下一个星期一和月中的一周。 在上面的例子中,代码获取下一个星期一及其所在的星期。星期是二月的第二周,但那个星期一不是第二个星期一,而是第一个星期一。如果您有任何帮助,我们将不胜感激。
问题内容: python是否提供一种轻松获取 每月 当前星期(1:4)的方法? 问题答案: 为了使用直接除法,您需要根据当月第一天的位置(星期内)来调整您要查看的日期的星期几。因此,如果您的月份恰好在星期一(一周的第一天)开始,则可以按照上面的建议进行除法。但是,如果该月从星期三开始,则需要加2,然后进行除法。这些都封装在下面的函数中。