我想在java中检测每个月的第一周/第二周的第一个星期日/星期一的日期? 我怎样才能实现它?
我已经检查了Calendar类以及java中的Date类但是无法获得解决方案,所以请帮我解决这个问题。
答案 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 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}
中的任何一天。
如果您需要添加时间信息,可以使用任何可用的LocalDate
至LocalDateTime
转换,例如
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();
}