java如何得到指定日期月的第几周?按每年的1号为第一周开始算。

2024-11-16 00:23:34
推荐回答(2个)
回答1:

你第一问需要思考一下,你第二问日历类直接get即可!

第一问:

年末与年初进行周与周重叠的时候,获取的是第二年的第一周数字,这个时候其实很简单,因为月份是绝对不相同的对不?

直接判断月份即可,头年月份肯定不会第二年月份想等,在同时判断一下,周是否为1,条件同时达到,就叠加52即可!

截个图,你参照日历看一下,分毫不差:

回答2:

我是这样想的:
(例如现在是2月)先获取2月1日为星期X。
然后获取今天是2月y日
用x+(y-1)/7 就能得到今天是2月的第几周

以下是代码:
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class Date {
static Calendar calendar = Calendar.getInstance();
static int year,month,day; //分别代表年,月,日
static int date; //最终结果为:是month月的第date周

public static void main(String[] args){
year = calendar.get(Calendar.YEAR); /*获取今天是几年几月几日
month = calendar.get(Calendar.MONTH)+1; *(可将其直接赋值为所需判断日期)
day = calendar.get(Calendar.DATE)-1; */

String week = getDayOfWeekByDate(year+"-0"+month+"-01");
//调用方法获取本月的一日是星期几

if(week.equals("星期一"))
date=1;
if(week.equals("星期二"))
date=2;
if(week.equals("星期三"))
date=3;
if(week.equals("星期四"))
date=4;
if(week.equals("星期五"))
date=5;
if(week.equals("星期六"))
date=6;
if(week.equals("星期七"))
date=7;

date+=day;
date/=7; //应为是整数类,所以不会出现浮点数
System.out.print("今天是"+month+"月的第"+date+"周\n");
System.out.print("今天是"+getDayOfWeekByDate(year+"-0"+month+"-0"+(day+1))+"\n");

}
//获取指定时间是星期几

public static String getDayOfWeekByDate(String date) {

String dayOfweek = "-1";
try {
SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date myDate = myFormatter.parse(date);
SimpleDateFormat formatter = new SimpleDateFormat("E");
String str = formatter.format(myDate);
dayOfweek = str;
} catch (Exception e) {
System.out.println(e.getMessage());
}
return dayOfweek;

}

}