Calendar c_begin = CalendargetInstance();
Calendar c_end = CalendargetInstance();
c_beginset(2010, 3, 1); //Calendar的月从0-11,所以4月是3
c_endset(2010, 4, 20); //Calendar的月从0-11,所以5月是4
int count = 0;
while(c_beginbefore(c_end)){
//Systemoutprintln(new javasqlDate(c_begingetTime()getTime()));
if(c_beginget(CalendarDAY_OF_WEEK)==CalendarMONDAY){
count++;
}
if(count == 2){
Systemoutprintln(c_beginget(CalendarYEAR)+"年"+(c_beginget(CalendarMONTH)+1)+"月"+c_beginget(CalendarDATE)+"日");
break;
}
c_beginadd(CalendarDAY_OF_YEAR, 1);
}
可以这样试试,应该能理解吧。如有不懂再问我
获取本周一
public static Date getNowWeekMonday(Date date) {Calendar cal = CalendargetInstance();
calsetTime(date);
caladd(CalendarDAY_OF_MONTH, -1); //解决周日会出现 并到下一周的情况
calset(CalendarDAY_OF_WEEK, CalendarMONDAY);
303 return calgetTime();
}
获取上周一
public static Date getLastWeekMonday(Date date) {Date a = DateUtilsaddDays(date, -1);
Calendar cal = CalendargetInstance();
calsetTime(a);
caladd(CalendarWEEK_OF_YEAR, -1);// 一周
calset(CalendarDAY_OF_WEEK, CalendarMONDAY);
return calgetTime();
}
获取上周日
public static Date getLastWeekSunday(Date date) {
Date a = DateUtilsaddDays(date, -1);
Calendar cal = CalendargetInstance();
calsetTime(a);
calset(CalendarDAY_OF_WEEK, 1);
return calgetTime();
}
代码里面有用到 lapachecommon-ang包 你需要下载下 就可以使用
package comrxlamozhidao;
import javatextSimpleDateFormat;
import javautilCalendar;
public class Test {
public static void main(String[] args) {
getLastSunday();
}
/
获取离当前日期最近的一个星期天
/
public static void getLastSunday() {
// 获取当前日期
Calendar calendar = CalendargetInstance();
// 距离上个周日的差值
long diffTime = 0L;
// 今天星期几,注:此处周日 = 1 ,周一 = 2 。。。。
int dayOfWeek = calendarget(CalendarDAY_OF_WEEK);
Systemoutprintln("toady:" + dayOfWeek);
// 如果今天是周日,看需求,是取今天的,还是取上周的
if (dayOfWeek == 1){
// 取今天
// dayOfWeek = 1;
// 取上周
dayOfWeek = 8;
}
// 计算当前时间距离上周日的时差,此处一周的开始从周日算起,根据需要
diffTime = (dayOfWeek - 1 ) 24 60 60 1000;
calendarsetTimeInMillis(SystemcurrentTimeMillis() - diffTime);
//
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Systemoutprintln("lastSunday:" + dateFormatformat(calendargetTime()));
// 如果一周的开始从周一计算,并且请注释掉上面的 if (dayOfWeek == 1) 处判断,需要重新判断
if (dayOfWeek == 1){
// 取今天
// dayOfWeek = 0;
// 取上周
dayOfWeek = 7;
}
diffTime = dayOfWeek 24 60 60 1000;
calendarsetTimeInMillis(SystemcurrentTimeMillis() - diffTime);
Systemoutprintln("lastSunday:" + dateFormatformat(calendargetTime()));
}
}
有不明白在问我
用SimpleDateFormat
import javatextParseException;import javatextSimpleDateFormat;
import javautilDate;
public class Test030 {
public static void main(String[] args){
String s = "2013/9";
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/dd");
sdf1setLenient(false);
SimpleDateFormat sdf2 = new SimpleDateFormat("EEE");
for(int i = 1; i < 32; i++){
try {
Date date = sdf1parse(s + "/" + i);
Systemoutprintln(sdf1format(date) + " : " + sdf2format(date));
} catch (ParseException e) {
//do nothing
}
}
}
}
输入结果:
2013/09/01 : 星期日
2013/09/02 : 星期一
2013/09/03 : 星期二
2013/09/04 : 星期三
2013/09/05 : 星期四
2013/09/06 : 星期五
2013/09/07 : 星期六
2013/09/08 : 星期日
2013/09/09 : 星期一
2013/09/10 : 星期二
2013/09/11 : 星期三
2013/09/12 : 星期四
2013/09/13 : 星期五
2013/09/14 : 星期六
2013/09/15 : 星期日
2013/09/16 : 星期一
2013/09/17 : 星期二
2013/09/18 : 星期三
2013/09/19 : 星期四
2013/09/20 : 星期五
2013/09/21 : 星期六
2013/09/22 : 星期日
2013/09/23 : 星期一
2013/09/24 : 星期二
2013/09/25 : 星期三
2013/09/26 : 星期四
2013/09/27 : 星期五
2013/09/28 : 星期六
2013/09/29 : 星期日
2013/09/30 : 星期一
你说需要计算一个月有多少周,若是指,一月,二月一直到十二月每个月有多少周的话,可以用Java8的新时间API进行计算,因为里面已经封装了每个月了,但由于每一年每个月的周数可能不同,所以必须还需要一个日期,也就是年,因此得到某年某月的某个时间,就可以相应算出这个时间所在月的第一天和最后一天,然后计算这第一天和最后一天相隔多少个周
思路:
获取所有月份的枚举集合A
随意获取一个时间B
循环所有的月份A,把B的月份依次修改为A中的每个月份,得到修改后的时间集合C
循环C中的所有时间,把每个时间都算出该时间的所在月份的第一天和最后一天,并计算周数
打印周数
代码:
// 随意取一个时间,取了当前时间LocalDate localDate = LocalDatenow();
Systemoutprintln("当前时间为:" + localDate);
// 根据封装好的月份获取一个一月到十二月的Month流,此时流里的对象为Month
Arraysstream(Monthvalues())
// 把每个month都调整到当前这个时间里,此时流的对象为LocalDate
map(month -> monthadjustInto(localDate))
// 这里方便里观察此时流的数据,把转换后的时间打印了出来
peek(Systemout::println)
// 根据时间的所在月的第一天和最后一天作为间隔计算周数
map(temporal -> ChronoUnitWEEKSbetween(temporalwith(TemporalAdjustersfirstDayOfMonth()), temporalwith(TemporalAdjusterslastDayOfMonth())))
// 打印最后的周数
forEach(Systemout::println);
以上就是关于Java根据日期得到当月第几周全部的内容,包括:Java根据日期得到当月第几周、java 如何获取 上周一日期,上周末日期,本周一日期。、在java里怎么取离当前日期最近的一个星期天等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)