以今天所在的星期为起点,在界面上显示N天之后的日期,补全今天所在星期的日期和N天后所在星期的日期.
如今天是17号,显示10天后的日期(10天后是27后,但需要补全17号所在的星期和27号所在的星期)显示结果
日 一 二 三 四 五 六
7/15 7/16 7/17 7/18 7/19 7/20 7/21
7/22 7/23 7/24 7/25 7/26 7/27 7/28谢谢!
如今天是17号,显示10天后的日期(10天后是27后,但需要补全17号所在的星期和27号所在的星期)显示结果
日 一 二 三 四 五 六
7/15 7/16 7/17 7/18 7/19 7/20 7/21
7/22 7/23 7/24 7/25 7/26 7/27 7/28谢谢!
* Calendar test
* @author
*
*/
import java.awt.*;
import java.awt.event.*;import javax.swing.JFrame;
import javax.swing.JPanel;public class LeapYearTest extends JFrame implements ActionListener {
/**
*
*/
private static final long serialVersionUID = 1L;Label result;TextArea txa;TextField t1;Button btn;int year;boolean leap;int weekDay;public LeapYearTest() {
super("Calendar Test");
setSize(280, 700);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
setLocation(dimension.width / 2 - 140, dimension.height / 2 - 350);JPanel panel = new JPanel();
result = new Label("year");
t1 = new TextField(5);
t1.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e) {
char input = e.getKeyChar();
if (!Character.isDigit(input) && input != '\b') {
e.consume();
}
}
public void keyPressed(KeyEvent e) {
}
public void keyReleased(KeyEvent e) {
}
});
btn = new Button("judge");
panel.add(result);
panel.add(t1);
panel.add(btn);txa = new TextArea("", 12, 36, TextArea.SCROLLBARS_VERTICAL_ONLY);
this.getContentPane().setLayout(new BorderLayout());
this.getContentPane().add(panel, "North");
this.getContentPane().add(txa, "Center");
btn.addActionListener(this);
}public void actionPerformed(ActionEvent e) {
year = Integer.parseInt(t1.getText());
t1.setText("");
if (year < 1) {
txa.setText("year canot be less than 1!");
return;
}
weekDay = (int) firstDayOfYear(year);
txa.append(" Calendar " + year + "\n");for (int i = 1; i <= 12; i++) {
printMonth(i);
//System.out.println("\n");
txa.append("\n");
}
}private void printMonth(int m) {
printHead(m);
int days = daysOfMonth(m);
for (int i = 1; i <= days; i++) {
if (i < 10) {
//System.out.print(" " + i);
txa.append(" " + i);
} else {
//System.out.print(" " + i);
txa.append(" " + i);
}weekDay = (weekDay + 1) % 7;
if (weekDay == 0) {
//System.out.println();
txa.append("\n");
//System.out.print("");// 控制2-6行
txa.append("");
}
}
}private void printHead(int m) {//System.out.println("========================================");
//System.out.println(" *日 一 二 三 四 五 六* " + m + "月");
//System.out.println("========================================");txa.append("========================================\n");
txa.append(" *日 一 二 三 四 五 六* |" + m + "月\n");
txa.append("========================================\n");
for (int i = 0; i < weekDay; i++) {
//System.out.print(" ");// 控制第一行
txa.append(" ");
}
}private long firstDayOfYear(int y) {
long n;
n = y * 365;
for (int i = 1; i < y; i++) {
if (isLeapYear(i))
n += 1;
}
return n %= 7;
}private int daysOfMonth(int m) {
switch (m) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return 31;
case 4:
case 6:
case 9:
case 11:
return 30;
case 2:
if (isLeapYear(year))
return 29;
else
return 28;
}
return weekDay;
}private boolean isLeapYear(int y) {
return ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0);
}public static void main(String[] args) {
LeapYearTest test = new LeapYearTest();
test.setVisible(true);
}
}
详细参考http://community.csdn.net/Expert/topic/5383/5383638.xml?temp=.857815
2, 计算date所在的星期日beginDate,date10所在的星期六endDate
3, 从beginDate到endDate循环打印,每隔七个换行(表头=“日 一 二 三 四 五 六”)
static void simpleCalendar(Date date, int interval){
// for output
DateFormat dateFormat = new SimpleDateFormat("M/dd");
// end date
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
calendar.add(Calendar.DATE, interval);
calendar.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
Date endDate = calendar.getTime();
// begin date
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
Date beginDate = calendar.getTime();
// display
System.out.println("Sun\tMon\tTue\tWed\tThu\tFri\tSat");
int count = 0;
while(!beginDate.after(endDate)){
System.out.print(dateFormat.format(beginDate)+ "\t");
count ++;
if(count % 7 == 0){
System.out.println();
}
// next date
calendar.add(Calendar.DATE, 1);
beginDate = calendar.getTime();
}
}
public static void main(String[] args) {
simpleCalendar(new Date(), 10);
}
output:
==================================================
Sun Mon Tue Wed Thu Fri Sat
7/15 7/16 7/17 7/18 7/19 7/20 7/21
7/22 7/23 7/24 7/25 7/26 7/27 7/28
Calendar cParam = Calendar.getInstance();
c.setTime(new Date(107,6,18));
cParam.setTime(c.getTime());
result(cParam);
System.out.println("After 10 days : ");
cParam.setTime(c.getTime());
cParam.add(Calendar.DATE, 10);
result(cParam);
}
private void result(Calendar cParam){
int day = cParam.get(Calendar.DAY_OF_WEEK);
cParam.add(Calendar.DATE, 1-day);
for(int i=0;i<7;i++){
System.out.println(new SimpleDateFormat("yyyy/MM/dd").format(cParam.getTime()));
cParam.add(Calendar.DATE, 1);
}
}