java-计算周数-开始日期为周一,结束日期为周日
下面是我用来计算一个月的周数的代码。但实际上我需要几个星期,每个星期的开始日是星期一,结束日是星期天。例如,2012年1月将有5周。但根据上述标准,将有6周。java-计算周数-开始日期为周一,结束日期为周日,java,date,calendar,Java,Date,Calendar,下面是我用来计算一个月的周数的代码。但实际上我需要几个星期,每个星期的开始日是星期一,结束日是星期天。例如,2012年1月将有5周。但根据上述标准,将有6周。 2012年1月 第一周-周日01 第二周-2个周一至8个周日 第三周-星期一9点到星期日15点 第四周-16周一至22周日 第五周-23周一至29周日 第六周-星期一30日至星期二31日 下面的代码只给出了5周 public class Test { public static void main(String[] args)
2012年1月
第一周-周日01
第二周-2个周一至8个周日
第三周-星期一9点到星期日15点
第四周-16周一至22周日
第五周-23周一至29周日
第六周-星期一30日至星期二31日 下面的代码只给出了5周
public class Test {
public static void main(String[] args)
{
Calendar calendar = Calendar.getInstance();
int year = 2012;
int month = Calendar.JANUARY;
int date = 1;
calendar.set(year, month, date);
int numOfDaysInMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
int numOfWeeksInMonth = calendar.getActualMaximum(Calendar.WEEK_OF_MONTH);
System.out.println("Number of Days In Month: " + numOfDaysInMonth);
System.out.println("Number of Weeks In Month: " + numOfWeeksInMonth);
}
}
上述代码的输出为月份天数:31
月内周数:5 但是我需要得到“月内周数:”作为6
*此外,我正在尝试以ddMMYYYY格式获取每周的开始日期和结束日期* 我还在努力 有人能帮我修一下吗?试试这个功能
public static void main(String[] args) {
System.out.println(getNumberOfWeeks(2012, Calendar.JANUARY));
}
static int getNumberOfWeeks(int year, int month) {
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month);
c.set(Calendar.DAY_OF_MONTH, 1);
int numOfWeeksInMonth = 1;
while (c.get(Calendar.MONTH) == month) {
c.add(Calendar.DAY_OF_MONTH, 1);
if (c.get(Calendar.DAY_OF_WEEK) == Calendar.MONDAY) {
numOfWeeksInMonth++;
}
}
return numOfWeeksInMonth;
}
试试这个功能
public static void main(String[] args) {
System.out.println(getNumberOfWeeks(2012, Calendar.JANUARY));
}
static int getNumberOfWeeks(int year, int month) {
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month);
c.set(Calendar.DAY_OF_MONTH, 1);
int numOfWeeksInMonth = 1;
while (c.get(Calendar.MONTH) == month) {
c.add(Calendar.DAY_OF_MONTH, 1);
if (c.get(Calendar.DAY_OF_WEEK) == Calendar.MONDAY) {
numOfWeeksInMonth++;
}
}
return numOfWeeksInMonth;
}
添加此项以获取“月内周数:”如6所示
calendar.setFirstDayOfWeek(Calendar.MONDAY);
添加此项以获取“月内周数:”如6所示
calendar.setFirstDayOfWeek(Calendar.MONDAY);
试试这个:
public static int noWeeks(int year,int month)
{
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month);
c.set(Calendar.DAY_OF_MONTH, 1);
int initDay = c.get(Calendar.DAY_OF_WEEK)-1
;
int days = c.getActualMaximum(Calendar.DAY_OF_MONTH);
int a = (initDay==0?7:initDay)+days-1;
return a/7+(a%7==0?0:1);
}
试试这个:
public static int noWeeks(int year,int month)
{
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month);
c.set(Calendar.DAY_OF_MONTH, 1);
int initDay = c.get(Calendar.DAY_OF_WEEK)-1
;
int days = c.getActualMaximum(Calendar.DAY_OF_MONTH);
int a = (initDay==0?7:initDay)+days-1;
return a/7+(a%7==0?0:1);
}
O正确的算法:
public static int getTotalWeeksOfMonth(int month, int year){
int monthIndex = month-1;
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, monthIndex);
c.set(Calendar.DAY_OF_MONTH, 1);
int numOfWeeksInMonth = 0;
while (c.get(Calendar.MONTH) == monthIndex) {
c.add(Calendar.DAY_OF_MONTH, 1);
int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);
if ( dayOfWeek == Calendar.SUNDAY) {
numOfWeeksInMonth++;
}
}
if (c.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY) {
numOfWeeksInMonth++;
}
return numOfWeeksInMonth;
}
O正确的算法:
public static int getTotalWeeksOfMonth(int month, int year){
int monthIndex = month-1;
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, monthIndex);
c.set(Calendar.DAY_OF_MONTH, 1);
int numOfWeeksInMonth = 0;
while (c.get(Calendar.MONTH) == monthIndex) {
c.add(Calendar.DAY_OF_MONTH, 1);
int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);
if ( dayOfWeek == Calendar.SUNDAY) {
numOfWeeksInMonth++;
}
}
if (c.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY) {
numOfWeeksInMonth++;
}
return numOfWeeksInMonth;
}
如果您的应用程序必须执行大量的日期和时间计算,我建议您使用Joda时间库(Apache2许可证)。有了它,一切都变得简单多了。至于,该项目现在正在进行中,团队建议迁移到类。请参阅。如果您的应用程序必须执行大量的日期和时间计算,我建议您使用Joda时间库(Apache2许可证)。有了它,一切都变得简单多了。至于,该项目现在正在进行中,团队建议迁移到类。参见。其给出的2013年和1月的产量为6。。。(noWeeks(2014年,日历1月))这是错误的。它给出的2013年和1月的产量为6。。。(noWeeks(2014年,日历,1月))这是错误的。请查看。请提供一些讨论、指导、解释、指向doc的链接,并继续。StackOverflow更像是一个代码片段库。请查看。请提供一些讨论、指导、解释、指向文档的链接,等等。StackOverflow更像是一个代码段库。