首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

怎么由年份和星期而得到当年所有的日期(月日),

2012-02-03 
如何由年份和星期而得到当年所有的日期(月日)在线等,急!!!请写出实现的方法[解决办法]参考:http://communi

如何由年份和星期而得到当年所有的日期(月日)在线等,急!!!
请写出实现的方法

[解决办法]
参考:http://community.csdn.net/Expert/TopicView.asp?id=5383638
/**
* Calendar test 根据年份,打印该年日历
* @author
*
*/
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.TextArea;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.Calendar;
import java.util.GregorianCalendar;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class LeapYearTest extends JFrame implements ActionListener {
/**
*
*/
private static final long serialVersionUID = 1L;

JLabel result;

TextArea txa;

JTextField t1;

JButton 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 JLabel( "year ");
t1 = new JTextField(5);
t1.setToolTipText( "input the year > 0 ");
btn = new JButton( "generate ");

t1.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e) {
char input = e.getKeyChar();
if(input == '\n ')
generate();
else if (!Character.isDigit(input) && input != '\b ') {
e.consume();
}else{
btn.setEnabled(true);
}
}
public void keyPressed(KeyEvent e) {
}
public void keyReleased(KeyEvent e) {
}
});
btn.setToolTipText( "Generate the year " + t1.getText() + " Calendar ");
btn.setEnabled(false);
panel.add(result);
panel.add(t1);
panel.add(btn);

txa = new TextArea( " ", 12, 36, TextArea.SCROLLBARS_VERTICAL_ONLY);
txa.setEditable(false);
this.getContentPane().setLayout(new BorderLayout());
this.getContentPane().add(panel, "North ");
this.getContentPane().add(txa, "Center ");
btn.addActionListener(this);


}

public void actionPerformed(ActionEvent e) {
generate();
}

private void generate()
{
System.out.println(t1.getText());
if(t1.getText() == null || t1.getText().equals( " ")){
return;
}
year = Integer.parseInt(t1.getText());
t1.setText( " ");
if (year < 1) {
txa.setText( "year canot be less than 1! ");
return;
}
else
txa.setText( " Calendar Year: " + year + "\n ");
weekDay = (int) firstDayOfYear(year);
for (int i = 1; i <= 12; i++) {
printMonth(i);
//System.out.println( "\n ");
txa.append( "\n ");
}
t1.setText( " ");
btn.setEnabled(false);
}
private void printMonth(int m) {
printHead(m);
int days = daysOfMonth(m);
Calendar calendar = new GregorianCalendar();
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);
}
if(m == calendar.get(Calendar.MONTH)+1 && i == calendar.get(Calendar.DAY_OF_MONTH))
txa.append( "* ");
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);
test.setAlwaysOnTop(true);
//test.setExtendedState(JFrame.MAXIMIZED_BOTH);
JFrame.setDefaultLookAndFeelDecorated(true);
}
}
[解决办法]
有年份不就全搞定了吗?不需要星期吧
可以参照个日历的做法
[解决办法]
同一楼上,有了年,日期就定了。用Calendar day加1,循环

热点排行