展开全部
package com.cloudroom.test;
import java.text.DateFormat;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
public class CalendarO {
static final public String[] WEEK = new String[] {"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
private int[] Weeks; //日历周
private int[] day; //单元格日期对象
private int rows; //日历表行数
private Date lastDay;//当月62616964757a686964616fe59b9ee7ad9431333264663037最后一天
private Date firstDay; //当月第一天
private String dformat = "yyyy-MM-dd";
private TimeZone utz;
public String format(Date d,TimeZone tz,String format) {
DateFormat df = new SimpleDateFormat(format);
df.setTimeZone(tz);
return df.format(d);
}
public Date lastMonthday(Date d) {
Calendar c = Calendar.getInstance();
c.setTime(d);
c.set(Calendar.DATE, 1);
c.roll(Calendar.DATE, -1);
String str = this.format(c.getTime(), utz, dformat);
return strToDate(str);
}
private void initWeek(Date d) {
int fw,lw,week[];
Calendar c = Calendar.getInstance();
c.setTime(this.firstMonthday(d));
fw = c.get(Calendar.WEEK_OF_YEAR);
c.setTime(this.lastMonthday(d));
lw = c.get(Calendar.WEEK_OF_YEAR);
int arrlen = lw-fw+1;
this.setRows(arrlen);
week = new int[arrlen];
for(int i=0; i
if(i==0) {
week[i]=lw;
} else {
week[i]=week[i-1]+1;
}
}
this.setWeeks(week);
}
/**
* 初始化日历数组
* @param d
*/
private void initDay(Date d) {
this.initWeek(d);
int arrlen = this.getWeeks().length*7;
int[] days = new int[arrlen];
Calendar c = Calendar.getInstance();
c.setTime(this.firstMonthday(d));
int num = c.get(Calendar.DAY_OF_WEEK);
c.add(Calendar.DAY_OF_MONTH, -num);
for(int index=0; index
c.add(Calendar.DAY_OF_MONTH, 1);
days[index] = c.get(Calendar.DAY_OF_MONTH);
}
this.setDay(days);
}
/**
* 将短时间格式字符串转换为时间 yyyy-MM-dd
*
* @param strDate
* @return
*/
private Date strToDate(String strDate) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
ParsePosition pos = new ParsePosition(0);
Date strtodate = formatter.parse(strDate, pos);
return strtodate;
}
private Date firstMonthday(Date d) {
Calendar c = Calendar.getInstance();
c.setTime(d);
c.set(Calendar.DATE, 1);
return strToDate(this.format(c.getTime(), utz, dformat));
}
public void setDformat(String dformat) {
this.dformat = dformat;
}
public void setRows(int rows) {
this.rows = rows;
}
public void setUtz(TimeZone utz) {
this.utz = utz;
}
public int getRows() {
return rows;
}
public TimeZone getUtz() {
return utz;
}
public String getDformat() {
return dformat;
}
public Date getLastDay() {
return lastDay;
}
public void setLastDay(Date lastDay) {
this.lastDay = lastDay;
}
public Date getFirstDay() {
return firstDay;
}
public void setFirstDay(Date firstDay) {
this.firstDay = firstDay;
}
public int[] getWeeks() {
return Weeks;
}
public void setWeeks(int[] weeks) {
Weeks = weeks;
}
public int[] getDay() {
return day;
}
public void setDay(int[] day) {
this.day = day;
}
public static void main(String[] args) {
CalendarO oj = new CalendarO();
TimeZone tz = TimeZone.getDefault();
oj.setUtz(tz);
String dStr = "2011-11-10";
Date d=oj.strToDate(dStr);
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
//System.out.println(df.format(oj.lastMonthday(d)));
//System.out.println(df.format(oj.firstMonthday(d)));
oj.initDay(d);
System.out.print(" ");
for(int i=0; i<7; i++) {
System.out.print(WEEK[i]+"");
}
for(int h=0; h
if(h%7==0){
System.out.println();
System.out.print("第"+oj.getWeeks()[h/7]+"周");
}
System.out.print(oj.getDay()[h]+"");
}
}
}
已赞过
已踩过<
你对这个回答的评价是?
评论
收起