这个比较简单,4行代码就行
Calendar calendar = CalendargetInstance();
calendarset(CalendarDAY_OF_MONTH, 1);
SimpleDateFormat format = new SimpleDateFormat("E");
Systemoutprintln("本月第一天是:" + formatformat(calendargetTime()));
如果你要得到一个数字的话就是:
calendarget(CalendarDAY_OF_WEEK),当然,这个结果是以星期天为第一天算出来的,如果要换成星期一开始,减1就行了
希望能帮助你。
你先取某一年的第一天为起点。比如2012年第一天是星期日。
在判断这年是否是闰年,(2012年是闰年):
闰年的判断函数:
boolean isLeapYear( int year )
{
return (0==year%4) || (0==year%100 && 0==year%400 );
}
若是闰年,该年有366天,则星期数(如果7代表星期天)加减366%7后模7;
若是平年,该年有365天,则星期数加减365%7模7。
如果是算未来(对2012来说)则加(一年的天数)%7后模7,反之则减(一年的天数)%7后模7。
比如2013年第一天是星期 [ 7+(366)%7]%7;2011年第一天是星期 [7-(365)%7]%7;
用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 : 星期一
Calendar cal = CalendargetInstance();
int i = 1;
//DAY_OF_WEEK获取当前时间是一个星期的第几天,星期日是第一天 星期一是第二天,以此类推
//CalendarMONDAY判断是不是星期1
while(calget(CalendarDAY_OF_WEEK) != CalendarMONDAY){
calset(CalendarDAY_OF_MONTH, i++);//设置这个月的星期1 为几号
}
Date firstMonday = calgetTime();//取得日期和时间
String dtStr = new SimpleDateFormat("MM月dd日")format(firstMonday);//格式化日期
Systemoutprintln(dtStr);
import javatextDateFormatSymbols;
import javautilCalendar;
import javautilGregorianCalendar;
public class Test {
/
@param args
/
public static void main(String[] args){
Calendar c_begin = new GregorianCalendar();
Calendar c_end = new GregorianCalendar();
DateFormatSymbols dfs = new DateFormatSymbols();
String[] weeks = dfsgetWeekdays();
c_beginset(2010, 3, 2); //Calendar的月从0-11,所以4月是3
c_endset(2010, 4, 20); //Calendar的月从0-11,所以5月是4
int count = 1;
c_endadd(CalendarDAY_OF_YEAR, 1); //结束日期下滚一天是为了包含最后一天
while(c_beginbefore(c_end)){
Systemoutprintln("第"+count+"周 日期:"+new javasqlDate(c_begingetTime()getTime())+", "+weeks[c_beginget(CalendarDAY_OF_WEEK)]);
if(c_beginget(CalendarDAY_OF_WEEK)==CalendarSUNDAY){
count++;
}
c_beginadd(CalendarDAY_OF_YEAR, 1);
}
}
}
public static void main(String[] agrs) {
String newtime="2013-8-4";
Systemoutprintln(newtime+""+testDate(newtime));
}
public static String testDate(String newtime) {
String dayNames[] = {"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
int week1[] = {7,1,2,3,4,5,6};
Calendar c = CalendargetInstance();// 获得一个日历的实例
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
csetTime(sdfparse(newtime));
} catch (ParseException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
String a=dayNames[cget(CalendarDAY_OF_WEEK)-1];
int b=week1[cget(CalendarDAY_OF_WEEK)-1];
if(b!=7){
cset(CalendarDAY_OF_WEEK, CalendarMONDAY);
}else{
cadd(CalendarWEEK_OF_MONTH, -1);
cset(CalendarDAY_OF_WEEK, 2);
}
for(int i=1;i<b;i++){
if(i==1){
Systemoutprintln(sdfformat(cgetTime()));//本周一
}
cadd(CalendarDATE,1);
Systemoutprintln(sdfformat(cgetTime()));
}
Systemoutprintln("-------------");
return a;
}
测试结果:
2013-07-29
2013-07-30
2013-07-31
2013-08-01
2013-08-02
2013-08-03
2013-08-04
-------------
2013-8-4星期日
以上就是关于急:用java如何得到当前月的第一天是星期几全部的内容,包括:急:用java如何得到当前月的第一天是星期几、java中如何求出某一年第一天是星期几、java 获取某一月的所有周的日期段(周一到周日)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)