Java 如何获取某个月的周数?
我只是想问一下,获得某个月的周数的有效方法是什么。我有一个以月数和年为参数的函数,该函数的返回值应该是一个int数组,其中包含特定月份的周数。(如下所示…)Java 如何获取某个月的周数?,java,Java,我只是想问一下,获得某个月的周数的有效方法是什么。我有一个以月数和年为参数的函数,该函数的返回值应该是一个int数组,其中包含特定月份的周数。(如下所示…) 该类的WEEK\u OF\u YEAR属性对您很有用 创建一个新日期,该日期将是给定月份的第一天。获取这一天的一周,假设您获得了start值 创建一个新日期,该日期将是给定月份的最后一天。获取这一天的一年中的一周,这样您就得到了end值 最后,创建一个简单的int[],其中包含从start到end的值 为项目创建日历实例 一个月的第一天和最
该类的
WEEK\u OF\u YEAR
属性对您很有用
创建一个新日期,该日期将是给定月份的第一天。获取这一天的一周,假设您获得了start
值
创建一个新日期,该日期将是给定月份的最后一天。获取这一天的一年中的一周,这样您就得到了end
值
最后,创建一个简单的int[]
,其中包含从start
到end
的值
get(Calendar.WEEK/OF/u YEAR)
我不确定您是要返回一个长度等于该月天数的数组,每个值都是相应日期的周数,还是要返回指定月份天数的所有不同的周数的数组。假设是前者,这应该是可行的:
public static int[] getWeeksOfMonth(int month, int year)
{
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month);
cal.set(Calendar.DAY_OF_MONTH, 1);
int ndays = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
int weeks[] = new int[ndays];
for (int i = 0; i < ndays; i++)
{
weeks[i] = cal.get(Calendar.WEEK_OF_YEAR);
cal.add(Calendar.DATE, 1);
}
return weeks;
}
public static int[]getWeeksOfMonth(int月,int年)
{
Calendar cal=Calendar.getInstance();
校准设置(日历年、年份);
校准设置(日历、月份、月份);
校准设置(日历日/月/日,1);
int ndays=cal.getActualMaximum(日历日/月日);
整数周[]=新整数周[ndays];
对于(int i=0;i
如果要为指定月份中的天数创建一个不同周数的数组,请执行以下操作:
public static Integer[] getWeeksOfMonth(int month, int year)
{
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month);
cal.set(Calendar.DAY_OF_MONTH, 1);
Set<Integer> weeks = new HashSet<Integer>();
int ndays = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
for (int i = 0; i < ndays; i++)
{
weeks.add(cal.get(Calendar.WEEK_OF_YEAR));
cal.add(Calendar.DATE, 1);
}
return weeks.toArray(new Integer[0]);
}
public static Integer[]getWeeksOfMonth(整数月,整数年)
{
Calendar cal=Calendar.getInstance();
校准设置(日历年、年份);
校准设置(日历、月份、月份);
校准设置(日历日/月/日,1);
Set weeks=新HashSet();
int ndays=cal.getActualMaximum(日历日/月日);
对于(int i=0;i
(注意,最后一个示例返回一个
Integer
对象数组,但是修改它以返回一个int
数组并不重要)Calendar cal=Calendar.getInstance()
int maxWeeknumber=cal.getActualMaximum(日历周/月) 我认为,这是一种更简单的方法:
Calendar now = Calendar.getInstance();
System.out.println("Current week of month is : " +
now.get(Calendar.WEEK_OF_MONTH));
问题不清楚,请接受您之前问题的答案。复制您未接受的另一个问题!你不必重复整个月。只要看一看第一天的一周,比如说
s
,最后一天的一周,比如说e
,然后构建包含e-s+1
值的数组,从s
到e
@Flinsch是的,你是对的。我已经更新了我的答案。弗林希:这不会在所有情况下都有效。例如,见2010年1月。一年的头三天属于第53周。第四天属于第一周。你说得对,对不起。因此,您需要对s>e
(仅适用于1月份)进行如下特殊情况处理:如果s>e
:构建类似{s,1,…,e}
的数组。否则:像{s,…,e}
那样构建数组。注意,可能会发生这种情况(结束索引<开始索引)。嗯-如何?只要是我们处理的同一个月,endIndexCalendar now = Calendar.getInstance();
System.out.println("Current week of month is : " +
now.get(Calendar.WEEK_OF_MONTH));