找出当月的第一个星期日/星期一等的日期

时间:2014-01-21 17:40:17

标签: java android date datetime

我想在java中检测每个月的第一周/第二周的第一个星期日/星期一的日期? 我怎样才能实现它?

我已经检查了Calendar类以及java中的Date类但是无法获得解决方案,所以请帮我解决这个问题。

7 个答案:

答案 0 :(得分:2)

            Calendar calendar = Calendar.getInstance();               
            SimpleDateFormat sdf = new SimpleDateFormat("MMM/dd/YYYY");
            calendar.set(Calendar.MONTH,Calendar.JUNE);
            calendar.set(Calendar.DAY_OF_MONTH,1);          
            int day = (Calendar.TUESDAY-calendar.get(Calendar.DAY_OF_WEEK));            
            if(day<0){
              calendar.add(Calendar.DATE,7+(day));
            }else{
                calendar.add(Calendar.DATE,day);
            }
            System.out.println("First date is "+sdf.format(calendar.getTime()));`enter code here`

答案 1 :(得分:1)

这将给你第一个星期六系统日期的每个月的每个月...你也可以在任何其他日子的星期六取得其他替换

  

由HK2和Hemant发明

import java.util.Calendar;
import java.util.GregorianCalendar
           class Demo{
                 SimpleDateFormat format =new SimpleDateFormat("dd-MMM-yyyy");
                String DATE_FORMAT = "yyyy MM dd";

                SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
                Calendar c1 = Calendar.getInstance(); 

                String y=sdf.format(c1.getTime());
                String years=y.substring(0,4);
                int year=Integer.parseInt(years);

                Calendar cal = new GregorianCalendar(year, Calendar.JANUARY, 1);
                for (int i = 0, inc = 1; i <366 && cal.get(Calendar.YEAR) == year; i+=inc) {
                    if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY) {

                        String frm="";
                        frm=format.format(cal.getTime());



                         // System.out.println("the value of the saturday is "+format.format(cal.getTime()));
                          cal.add(Calendar.MONTH,1);
                          cal.set(Calendar.DAY_OF_MONTH, 1);
                    } 

                    else {
                        cal.add(Calendar.DAY_OF_MONTH, 1);
                         }
                }
}

答案 2 :(得分:1)

Java.time

使用Java 8中内置的java.time库:

import java.time.{DayOfWeek, LocalDate}
import java.time.temporal.TemporalAdjusters.firstInMonth

val now = LocalDate.now() # 2015-11-23
val firstMonday = now.`with`(firstInMonth(DayOfWeek.MONDAY)) # 2015-11-02 (Monday)

您可以选择java.time.DayOfWeek.{MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY}中的任何一天。

如果您需要添加时间信息,可以使用任何可用的LocalDateLocalDateTime转换,例如

firstMonday.atStartOfDay() # 2015-11-02T00:00

答案 3 :(得分:1)

使用Java 8执行此操作的最简单方法是:

LocalDate firstSundayOfNextMonth = LocalDate
              .now()
              .with(firstDayOfNextMonth())
              .with(nextOrSame(DayOfWeek.MONDAY));

答案 4 :(得分:0)

您可以使用Calendar类获取Java中特定日期的星期几,如下所述:

How to determine day of week by passing specific date?

然后,您可以遍历范围内的日期,以查找星期日的第一个实例和星期一的第二个实例。

答案 5 :(得分:0)

    Calendar calendar = Calendar.getInstance();
    calendar.set(year, month, date);
    int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);

所以它会给出一个月的第一次约会。从中你可以计算出你想要的东西。

答案 6 :(得分:0)

public static Calendar getFirstMonday(Date startDate) {
    Calendar c = Calendar.getInstance();
    c.setTime(startDate);
    int day = c.get(Calendar.DAY_OF_WEEK);
    while (day != 1) {
        c.add(Calendar.DATE, 1);
        day = c.get(Calendar.DAY_OF_WEEK);
    }
    return c;
}

通过以下方式查找所有星期的第一个星期一:

            SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");

    String strDate = "01/01/2014";
    Date date;
    try {
        date = sdf.parse(strDate);

        for (int i = 0; i < 52; i++) {
            Calendar c = getFirstMonday(date);
            System.out.println("monday: " + sdf.format(c.getTime()));
            c.add(Calendar.DATE, 7);
        }
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }