没必要那么麻烦,即使不用Calendar也可以用Date啊,虽然已经不被鼓励使用了
Date date = new Date() ;
datesetYear(n) ;
datesetMonth(y+1) ;
datesetDate(t) ;
Systemoutprintln(dategetDay()+1) ;
e = dategetDay()+1 ;
这样直接就获取是星期几了,e就是星期几
如果你实在是想练习一下switch的话,main函数我改了,以下:
public static void main( String[] args )
{
int d , n , y , t , x , e , a ;
n = IntegerparseInt(JOptionPaneshowInputDialog("请输入年号")) ;
y = IntegerparseInt(JOptionPaneshowInputDialog("请输入月份")) ;
t = IntegerparseInt(JOptionPaneshowInputDialog("请输入几号")) ;
d = n + (n - 1) / 4 - (n - 1) / 100 + (n - 1) / 400 ;
if ( n % 4 == 0 )
a = 28 ;
else
a = 29 ;
switch (y)
{
case 1 :
x = t - 1 ;
break ;
case 2 :
x = t + 30 ;
break ;
case 3 :
x = a + t + 30 ;
break ;
case 4 :
x = a + t + 31 + 30 ;
break ;
case 5 :
x = a + t + 31 + 30 + 30 ;
break ;
case 6 :
x = a + t + 31 + 30 + 31 + 30 ;
break ;
case 7 :
x = a + t + 31 + 30 + 31 + 30 + 30 ;
break ;
case 8 :
x = a + t + 31 + 30 + 31 + 30 + 30 + 31 ;
break ;
case 9 :
x = a + t + 31 + 30 + 31 + 30 + 30 + 31 + 31 ;
break ;
case 10 :
x = a + t + 31 + 30 + 31 + 30 + 30 + 31 + 31 + 30 ;
break ;
case 11 :
x = a + t + 31 + 30 + 31 + 30 + 30 + 31 + 31 + 30 + 31 ;
break ;
case 12 :
x = a + t + 31 + 30 + 31 + 30 + 30 + 31 + 31 + 30 + 30 + 31 ;
break ;
default :
x = 0 ;
break ;
}
e = (d + x) % 7 ;
if ( e == 0 )
JOptionPaneshowMessageDialog(null, "这天是星期天") ;
if ( !(e == 0) )
JOptionPaneshowMessageDialog(null, "这天是星期" + e) ;
}
计算一年有多少个周的思路:首先,每年至少有52个周,至多有53个周,取决于周一是在哪年(也可以定位周日,这个是由需求决定的),以下是详细代码,其中判断哪一天决定了当周是属于哪一年的逻辑是写在getYearWeekEndDay中。
/
返回指定年度的所有周。List中包含的是String[2]对象<br>
string[0]本周的开始日期,string[1]是本周的结束日期。<br>
日期的格式为yyyy-MM-dd。<br>
每年的第一个周,必须包含星期一且是完整的七天。<br>
例如:2009年的第一个周开始日期为2009-01-05,结束日期为2009-01-11。 <br>
星期一在哪一年,那么包含这个星期的周就是哪一年的周。<br>
例如:2008-12-29是星期一,2009-01-04是星期日,哪么这个周就是2008年度的最后一个周。<br>
@param year 格式 yyyy ,必须大于1900年度 小于9999年
@return
/
public static List<String[]> getWeeksByYear(final int year){
if(year<1900 || year >9999){
throw new NullPointerException("年度必须大于等于1900年小于等于9999年");
}
//实现思路,首先计算当年有多少个周,然后找到每个周的开始日期和结束日期
// Calendar calendar = new GregorianCalendar();
// // 在具有默认语言环境的默认时区内使用当前时间构造一个默认的 GregorianCalendar。
// calendarsetFirstDayOfWeek(CalendarMONDAY); //设置每周的第一天为星期一
// calendarset(CalendarDAY_OF_WEEK, CalendarMONDAY); //每周从周一开始
// 上面两句代码配合,才能实现,每年度的第一个周,是包含第一个星期一的那个周。
// calendarsetMinimalDaysInFirstWeek(7); //设置每周最少为7天
// calendarset(CalendarYEAR, year); // 设置年度为指定的年
// //首先计算当年有多少个周,每年都至少有52个周,个别年度有53个周
int weeks = getWeekNumByYear(year);
// Systemoutprintln(year+"共有"+weeks+"个周");
List<String[]> result = new ArrayList<String[]>(weeks);
for(int i=1;i<=weeks;i++){
String[] tempWeek = new String[2];
tempWeek[0] = getYearWeekFirstDay(year,i);
tempWeek[1] = getYearWeekEndDay (year,i);
//或者使用下面的代码,不过发现效率更低
// tempWeek[0] = getDateAdd(firstWeekDay,(i-1)7+0);
// tempWeek[1] = getDateAdd(firstWeekDay,(i-1)7+6);
resultadd(tempWeek);
// Systemoutprintln(i+"="+tempWeek[0]+"_"+tempWeek[1]);
}
return result;
}
/
计算指定年度共有多少个周。
@param year 格式 yyyy ,必须大于1900年度 小于9999年
@return
/
public static int getWeekNumByYear(final int year){
if(year<1900 || year >9999){
throw new NullPointerException("年度必须大于等于1900年小于等于9999年");
}
int result = 52;//每年至少有52个周 ,最多有53个周。
String date = getYearWeekFirstDay(year,53);
if(datesubstring(0, 4)equals(year+"")){ //判断年度是否相符,如果相符说明有53个周。
result = 53;
}
return result;
}
/
计算某年某周的开始日期
@param yearNum 格式 yyyy ,必须大于1900年度 小于9999年
@param weekNum 1到52或者53
@return 日期,格式为yyyy-MM-dd
/
public static String getYearWeekFirstDay(int yearNum,int weekNum) {
if(yearNum<1900 || yearNum >9999){
throw new NullPointerException("年度必须大于等于1900年小于等于9999年");
}
Calendar cal = CalendargetInstance();
calsetFirstDayOfWeek(CalendarMONDAY); //设置每周的第一天为星期一
calset(CalendarDAY_OF_WEEK, CalendarMONDAY);//每周从周一开始
// 上面两句代码配合,才能实现,每年度的第一个周,是包含第一个星期一的那个周。
calsetMinimalDaysInFirstWeek(7); //设置每周最少为7天
calset(CalendarYEAR, yearNum);
calset(CalendarWEEK_OF_YEAR, weekNum);
//分别取得当前日期的年、月、日
return getFormatDate(calgetTime());
}
/
计算某年某周的结束日期
@param yearNum 格式 yyyy ,必须大于1900年度 小于9999年
@param weekNum 1到52或者53
@return 日期,格式为yyyy-MM-dd
/
public static String getYearWeekEndDay(int yearNum,int weekNum) {
if(yearNum<1900 || yearNum >9999){
throw new NullPointerException("年度必须大于等于1900年小于等于9999年");
}
Calendar cal = CalendargetInstance();
calsetFirstDayOfWeek(CalendarMONDAY); //设置每周的第一天为星期一
calset(CalendarDAY_OF_WEEK, CalendarSUNDAY);//每周从周一开始
// 上面两句代码配合,才能实现,每年度的第一个周,是包含第一个星期一的那个周。
calsetMinimalDaysInFirstWeek(7); //设置每周最少为7天
calset(CalendarYEAR, yearNum);
calset(CalendarWEEK_OF_YEAR, weekNum);
return getFormatDate(calgetTime());
}
第几周是该月的第几周吗 还是该年的第几周
下面的程序包含了2种情况, 请自行选择
package comcalender;
import javautilCalendar;
import javautilLocale;
/
输出某周的日期
演示Calendar的用法
Calendar的使用一般分2步,
1确定某天, 调用set函数
2可以取出该天的任意信息, 通过get函数
@author: zhuby
@create date:2011-1-17
/
public class WeekCalendar {
/
周计数,为全年中的周计数
@param year
@param weekCount
@return
/
public int[] getWeekDateByWeekInYear(int year,int weekCount){
Calendar cal=CalendargetInstance(LocaleCHINA);
//设置calendar的日期,此处可以确定某一天
calset(CalendarYEAR, year);
calset(CalendarWEEK_OF_YEAR, weekCount);
//获取该天的信息(理论而言,通过改变get函数的参数,可以获取该天的任意信息)
int day=calget(CalendarDAY_OF_YEAR);
int[] days=new int[7];
for(int i=0;i<7;i++){
days[i]=calget(CalendarDAY_OF_MONTH);
// Systemoutprint((calget(CalendarMONTH)+1)+"月"+calget(CalendarDAY_OF_MONTH)+"日 ");
day++;
calset(CalendarDAY_OF_YEAR, day);
}
return days;
}
/
周计数为月中的周计数
@param year
@param month
@param weekCount
@return
/
public int[] getWeekDateByWeekInMonth(int year,int month,int weekCount){
Calendar cal=CalendargetInstance(LocaleCHINA);
calset(CalendarYEAR, year);
calset(CalendarMONTH, month-1);
calset(CalendarWEEK_OF_MONTH, weekCount);
int day=calget(CalendarDAY_OF_YEAR);
int[] days=new int[7];
for(int i=0;i<7;i++){
days[i]=calget(CalendarDAY_OF_MONTH);
// Systemoutprint((calget(CalendarMONTH)+1)+"月"+calget(CalendarDAY_OF_MONTH)+"日 ");
day++;
calset(CalendarDAY_OF_YEAR, day);
}
return days;
}
public static void main(String[] args) {
WeekCalendar wc=new WeekCalendar();
for(int i=0;i<7;i++){
Systemoutprint(wcgetWeekDateByWeekInYear(2011, 7)[i]+" ");
}
Systemoutprintln();
for(int i=0;i<7;i++){
Systemoutprint(wcgetWeekDateByWeekInMonth(2011,4, 2)[i]+" ");
}
}
}
以上就是关于java程序 输入年月日算星期几全部的内容,包括:java程序 输入年月日算星期几、java获取一年共有多少周、Java中怎么获取一个月的第几周的所有日期啊比如说我要获取一月的第一周的所有天数的日期是多少要怎么写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)