用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 : 星期一
我的理解是如果输入的星期等于当前日期的星期数,那么返回下一个周对应星期数的日期,否则返回当前日期往后最近的一个匹配的星期数的日期。如果我的理解没问题的话下面代码就能满足你的要求:
import javautilCalendar;import javautilDate;
public class Main {
public static void main(String[] args) {
Systemoutprintln(getDateByWeek(2));
}
/
根据星期获取日期
@param week 星期几 1代码星期日,2代表星期一。。。7代表星期六
@return
/
public static Date getDateByWeek(int week) {
int targetWeek = week;
Calendar c = CalendargetInstance();
// 当前日期星期数
int currWeek = cget(CalendarDAY_OF_WEEK);
if (currWeek == targetWeek) {
// 如果所给星期数和当前日期星期数相等则向后推7天
cadd(CalendarDAY_OF_MONTH, 7);
return cgetTime();
}
do {
// 向后推一天,直到星期数与所给星期数相同
cadd(CalendarDAY_OF_MONTH, 1);
} while (targetWeek != cget(CalendarDAY_OF_WEEK));
return cgetTime();
}
}
我的程序是输入某年某周,输出这一周的开始日期和结束时期,不知是否符合你的需要。至少Java是不直接提供这种方法的。
import javautil;
public class Test31 {
public static void main(String[] args) {
int year, year1, year2, month1, month2, day1, day2, week, sum = 0;
int[] days = new int[] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int i;
Scanner scan = new Scanner(Systemin);
Systemoutprint("年:");
year = scannextInt();
Systemoutprint("周次:");
week = scannextInt();
if (year < 0) {
Systemoutprintln("年份错误,必须大于等于0");
return;
}
if (week < 1 || week > 54) {
Systemoutprintln("周次错误,必须位于 1 53 之间");
return;
}
sum += 7 (week - 1);
//修正总天数
Calendar c = CalendargetInstance();
cset(year, 0, 1);
switch (cget(CalendarDAY_OF_WEEK))
{
case CalendarTUESDAY:
{
sum -= 1;
break;
}
case CalendarWEDNESDAY:
{
sum -= 2;
break;
}
case CalendarTHURSDAY:
{
sum -= 3;
break;
}
case CalendarFRIDAY:
{
sum -= 4;
break;
}
case CalendarSATURDAY:
{
sum -= 5;
break;
}
case CalendarSUNDAY:
{
sum -= 6;
break;
}
default:
break;
}
if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)) {
days[1] = 29;
}
for (i = 0; i < dayslength; i++) {
if (sum >= days[i]) {
sum -= days[i];
}
else {
break;
}
}
year1 = year;
month1= i + 1;
day1 = sum + 1;
//修改开始日期
if (day1 < 1) {
day1 += days[11];
month1 = 12;
year1--;
}
year2 = year1;
month2 = month1;
day2 = day1 + 6;
if (day2 > days[month1 - 1]) {
day2 -= days[month1 - 1];
month2++;
if (month2 > 12) {
month2 = 1;
year2++;
}
}
Systemoutprintf("%d年第%d周 : %d年%d月%d日 ~ %d年%d月%d日", year, week, year1, month1, day1, year2, month2, day2);
}
}
输出测试:
年:2011
周次:22
2011年第22周 : 2011年5月23日 ~ 2011年5月29日
年:2011
周次:1
2011年第1周 : 2010年12月27日 ~ 2011年1月2日
这是从星期一至星期日。
也可以这样:
public static void main(String[] args){
Scanner scan = new Scanner(Systemin);
Systemoutprint("年:");
int year = scannextInt();
Systemoutprint("周:");
int week = scannextInt();
Calendar c = CalendargetInstance();
cset(CalendarDAY_OF_WEEK, 1);
cset(CalendarWEEK_OF_YEAR, week);
//该周第一天(星期日)所在的日期
int y1 = cget(CalendarYEAR);
int m1 = cget(CalendarMONTH) + 1;
int d1 = cget(CalendarDATE);
cadd(CalendarDATE, 6);
//该周最后一天(星期六)所在的日期
int y2 = cget(CalendarYEAR);
int m2 = cget(CalendarMONTH) + 1;
int d2 = cget(CalendarDATE);
Systemoutprintf("%d年第%d周:%d-%d-%d ~ %d-%d-%d", year, week, y1, m1, d1, y2, m2, d2);
}
这是从星期日开始,如:
年:2011
周:22
2011年第22周:2011-5-22 ~ 2011-5-28
public static void main(String[] args) {
Calendar cal = CalendargetInstance();
//Java 中月 1 - 12 月,分别对应是 0 - 11
//设定目前日期为 2000/02/01(29天)
//calset(2000, 1, 1);
Systemoutprintln("现在的时间: " + calgetTime());
Systemoutprintln("本月共有 : " + calgetActualMaximum(CalendarWEEK_OF_MONTH) + " 周");
int date_Count = calgetActualMaximum(CalendarDAY_OF_MONTH);
//Java 中星期 日、一、二、三、四、五、六,分别对应是 1 - 7
if ((calget(CalendarDAY_OF_WEEK)) == 1) {
Systemoutprintln("今天星期天");
} else if ((calget(CalendarDAY_OF_WEEK)) == 2) {
Systemoutprintln("今天星期一");
} else if ((calget(CalendarDAY_OF_WEEK)) == 3) {
Systemoutprintln("今天星期二");
} else if ((calget(CalendarDAY_OF_WEEK)) == 4) {
Systemoutprintln("今天星期三");
} else if ((calget(CalendarDAY_OF_WEEK)) == 5) {
Systemoutprintln("今天星期四");
} else if ((calget(CalendarDAY_OF_WEEK)) == 6) {
Systemoutprintln("今天星期五");
} else if ((calget(CalendarDAY_OF_WEEK)) == 7) {
Systemoutprintln("今天星期六");
}
}
你第一问需要思考一下,你第二问日历类直接get即可!
第一问:
年末与年初进行周与周重叠的时候,获取的是第二年的第一周数字,这个时候其实很简单,因为月份是绝对不相同的对不
直接判断月份即可,头年月份肯定不会第二年月份想等,在同时判断一下,周是否为1,条件同时达到,就叠加52即可!
截个图,你参照日历看一下,分毫不差:
1,获取整年的天数
2,获取整月的天数
3,将信息输出
4,效果如下
5,博客地址参考:>
提倡了一下中文写,
static public void main(String 参数[]){
SimpleDateFormat 格式=new SimpleDateFormat("y年M月d日 E H时m分s秒",LocaleCHINA);
Calendar 日历=CalendargetInstance(LocaleCHINA);
//当前时间,貌似多余,其实是为了所有可能的系统一致
日历setTimeInMillis(SystemcurrentTimeMillis());
Systemoutprintln("当前时间:"+格式format(日历getTime()));
日历set(CalendarDAY_OF_WEEK, CalendarMONDAY);
Systemoutprintln("周一时间:"+格式format(日历getTime()));
}
===========
改到后天测了一下
输出
当前时间:2011年8月31日 星期三 12时32分40秒
周一时间:2011年8月29日 星期一 12时32分40秒
以上就是关于java 获取某一月的所有周的日期段(周一到周日)全部的内容,包括:java 获取某一月的所有周的日期段(周一到周日)、java 根据所填写的星期数获取日期、java中如何根据某一周(比如22周)获取这一周是几月几号,星期几。有这样的函数方法吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)