java日历一整年的代码 java编写一个日历

java编写日历

我给你贴上我在java核心技术中看到的代码吧,当然没有输入年份和月份,是按照当前时间创建的,写有我写的注释,应该能看的懂

创新互联建站成都企业网站建设服务,提供成都网站设计、网站制作网站开发,网站定制,建网站,网站搭建,网站设计,响应式网站设计,网页设计师打造企业风格网站,提供周到的售前咨询和贴心的售后服务。欢迎咨询做网站需要多少钱:18980820575

/*

* 2012年5月13日10:37:58

* 日历程序

* Function:

* 显示当前月份的日历

* 总结

* 1. 0-11分别代表1-12月

* 1-7分别代表周日-周六

* 2. 使用GregorianCalendar对象的get方法(参数)获取月,日,年等信息

* 3.

*/

import java.text.DateFormatSymbols;

import java.util.*;

public class CalendarTest {

public static void main(String[] args) {

//construct d as current date构造一个日期

GregorianCalendar d = new GregorianCalendar();

//获取今天是这个月的第几天

int today = d.get(Calendar.DAY_OF_MONTH); //Calendar.DAY_OF_MONTH作为参数调用,得到今天是这个月的第几天

int month = d.get(Calendar.MONTH); //月份

d.set(Calendar.DAY_OF_MONTH, 1); //设置d的日期是本月的1号

int weekDay = d.get(Calendar.DAY_OF_WEEK); //获取当天位于本星期的第几天,也就确定了星期几,值的范围是1-7

int firstDayOfWeek = d.getFirstDayOfWeek(); //获取一星期的第一天,我们得到的是Calendar.SUNDAY,因为我们一星期的第一天是周日

int indent = 0; //为了定位本月第一天,定义索引

while (weekDay != firstDayOfWeek) {

//注意,月份用0-11代表1-12月,为了清晰起见,使用常量代替,下面获取月份得到的实际是当前月-1的值,所以我们要加1

//System.out.printf("当前星期的第%d天,位于当月的第%d天, 现在是%d月\n",

// weekDay, d.get(Calendar.DAY_OF_MONTH), d.get(Calendar.MONTH)+1); //Test Code

indent++;//缩进个数+1

d.add(Calendar.DAY_OF_MONTH, -1);//当前天数-1,如果现在是1号,则执行本条代码后,时间变为上一个月最后一天

weekDay = d.get(Calendar.DAY_OF_WEEK); //重新获取当天位于本星期的第几天

}

String[] weekDayNames = new DateFormatSymbols().getShortWeekdays();//获取简短形式的星期字符串数组

//System.out.println(weekDayNames.length);getShortWeekdays()得到的数组的长度是8,下标为0的是没有值1为星期日...7为星期六

//注释代码1

//Java核心技术的代码

/*

do {

//System.out.printf("%4s", weekDayNames[weekDay]); //经过上面定义索引,weekDay代表的是本星期日

d.add(Calendar.DAY_OF_MONTH, 1); //天数加1

weekDay = d.get(Calendar.DAY_OF_WEEK); //重新获得weekDay的值

} while (weekDay != firstDayOfWeek); //当循环完一个星期后,这里判断不成立,退出循环

*/

//我写的代码,替换上面注释代码1

for (int i=1; iweekDayNames.length; i++)//打印星期标题

System.out.printf("%3s\t", weekDayNames[i]);//引号内是一个全角的空格,因为是中文版,不是书上英文环境,中文和空格对于不上,这里我们用\t解决

//System.out.printf("%3s ", weekDayNames[i]); //方式2

System.out.println();//换行

for (int i=1; i=indent; i++)//确定一星期的一天位置,利用上面indent

System.out.printf("\t");//如用方式2,则这里内容是四个全角空格

//实现输出日期

d.set(Calendar.MONTH, month);

d.set(Calendar.DAY_OF_MONTH, 1);

do {

//print day

int day = d.get(Calendar.DAY_OF_MONTH);

System.out.printf("%3d", day);

if (day == today)

System.out.print("*");

System.out.print("\t");

d.add(Calendar.DATE, 1);//天数加1

weekDay = d.get(Calendar.DAY_OF_WEEK);//刷新weekDay

if (weekDay == firstDayOfWeek) //如果这天等于星期天则换行

System.out.println();

} while (d.get(Calendar.MONTH) == month);

}

}

在java里怎么做万年历,一年的啊

先上张效果图:以下是实现代码:/*日历*/

import java.awt.*;

import java.awt.event.*;

import java.util.*;

import java.util.regex.Pattern;

import javax.swing.*;

public class Demo28 extends JFrame {

int m = 1;

String[] monthchoose = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10",

"11", "12" }; // 存放月份的字符数组

String[] columnNames = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" }; // 存放星期的字符数组

Calendar ca = Calendar.getInstance();

Container contentPane = getContentPane();

VectorString vector = new VectorString();

String[][] date = new String[6][7]; // 表格的显示数据的格式

TextField tf; // 文本框的值代表的是年份

JComboBox jb;

JTable table; // 把日期用table的方式显示出来

public void getDate(String year, String month, String week, int Max_Day) {

int n = 0, b = 0;

// 动态把传进来月份的天数存放到容器里

for (int j = 1; j = Max_Day; j++) {

vector.add(String.valueOf(j));

}

//每次往table里添加数据的时候,都预先把原table里 的 数据清空

for(int x = 0;xdate.length;x++){

for(int y = 0;ydate[x].length;y++){

date[x][y] = null;

}

}

// 根据传进来月份的第一天是星期几,来构建Table

for (int a = Integer.parseInt(week) - 1; a date[0].length; a++) {

date[0][a] = new String((String) vector.toArray()[n]);

n++;

}

for (int i = 1; i date.length; i++) {

for (int j = 0; j date[i].length; j++) {

if (n vector.size()) {

date[i][j] = new String((String) vector.toArray()[n]);

n++;

} else

break;

}

}

// 把容器里的数据全部清除,以备下次再存放新的数据

while (b vector.size()) {

vector.remove(b);

}

}

public void chooseDate(String day) {

JLabel label = new JLabel();

for (int y = 0; y date.length; y++) {

for (int z = 0; z date[y].length; z++) {

System.out.print(date[y][z] + " ");

System.out.println(day);

if (date[y][z] != null) {

if (date[y][z].equals(day)) {

table.setSelectionBackground(Color.yellow);

return;

}

}

}

}

}

public void paint() {

setTitle("日历");

setBounds(200, 200, 350, 178);

addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

System.exit(0);

}

});

int m = 0;

String year = String.valueOf(ca.get(Calendar.YEAR)); // 得到当前的系统时间的年份,并把这个数值存放到year这个变量里

String month = String.valueOf(ca.get(Calendar.MONTH) + 1); // 得到当前的系统时间的月份,并把这个数值存放到month这个变量里

String day = String.valueOf(ca.get(Calendar.DATE)); // 得到当前的系统时间的日期,并把这个数值存放到day这个变量里

ca.set(Calendar.DATE, 1); // 把Calendar 对象的DATA设置为1

String week = String.valueOf(ca.get(Calendar.DAY_OF_WEEK)); // 根据设置的Calendar对象,计算出这个月第一天是星期几

int Max_Day = ca.getActualMaximum(Calendar.DATE); // 得到当前系统时间月份有多少天

getDate(year, month, week, Max_Day);

// 从月份数组里取出与当前系统时间一样的月份值

for (int i = 0; i monthchoose.length; i++) {

if (monthchoose[i].equals(month)) {

m = i;

}

}

JToolBar toolBar = new JToolBar();

JButton b1 = new JButton("<");

b1.addMouseListener(new myMouseListener1());

JButton b2 = new JButton(">");

b2.addMouseListener(new myMouseListener2());

JLabel j1 = new JLabel("年");

JLabel j2 = new JLabel("月");

tf = new TextField(5);

tf.addKeyListener(new myKeyListener());

tf.setText(year);

jb = new JComboBox(monthchoose);

jb.setSelectedIndex(m);

jb.addActionListener(new myActionListener3());

table = new JTable(date, columnNames);

//table.addMouseListener(new tableMouseListener());

table.setPreferredScrollableViewportSize(new Dimension(350, 150));

JScrollPane jsp = new JScrollPane(table);

contentPane.add(jsp, BorderLayout.CENTER);

chooseDate(day);

toolBar.add(b1);

toolBar.add(tf);

toolBar.add(b2);

toolBar.add(j1);

toolBar.add(jb);

toolBar.add(j2);

toolBar.setLocation(0, 0);

toolBar.setSize(400, 15);

contentPane.add(toolBar, BorderLayout.NORTH);

setVisible(true);

new Thread(new PaintThread()).start(); // 调用内部类PaintThread,根据里面的设置来重画

}

public static void main(String[] args) {

Demo28 d28 = new Demo28();

d28.paint();

}

// 鼠标单击左边按钮触发的事件

class myMouseListener1 extends MouseAdapter {

public void mouseClicked(MouseEvent e) {

String str = tf.getText().trim(); // 得到文本框的值

int i = Integer.parseInt(str);

i = i - 1;

tf.setText(String.valueOf(i));

String new_year = String.valueOf(i); // 把表示年份的文本框的值存放到变量new_year里

ca.set(Calendar.YEAR, i); // 把Calendar 对象的YEAR设置为用户设置的年份

String new_month = (String) jb.getSelectedItem(); // 得到月份值

ca.set(Calendar.MONTH, Integer.parseInt(new_month) - 1); // 把Calendar对象的MONTH设置为用户设置的月份

ca.set(Calendar.DATE, 1); // 把Calendar 对象的DATA设置为1

String new_week = String.valueOf(ca.get(Calendar.DAY_OF_WEEK)); // 根据设置的Calendar对象,计算出这个月第一天是星期几

int Max_Day = ca.getActualMaximum(Calendar.DATE); // 根据设置后的Calendar对象计算这个月份有多少天

getDate(new_year, new_month, new_week, Max_Day);

}

}

class myKeyListener extends KeyAdapter {

public void keyReleased(KeyEvent e) {

try {

int i = Integer.parseInt(tf.getText().trim());

int key = e.getKeyCode();

if (key == KeyEvent.VK_ENTER) {

String new_year = String.valueOf(i);

ca.set(Calendar.YEAR, i); // 把Calendar对象的YEAR设置为用户设置的年份

String new_month = (String) jb.getSelectedItem(); // 得到月份值

ca.set(Calendar.MONTH, Integer.parseInt(new_month) - 1); // 把Calendar对象的MONTH设置为用户设置的月份

ca.set(Calendar.DATE, 1); // 把Calendar 对象的DATA设置为1

String new_week = String.valueOf(ca

.get(Calendar.DAY_OF_WEEK)); // 根据设置的Calendar对象,计算出这个月第一天是星期几

int Max_Day = ca.getActualMaximum(Calendar.DATE); // 根据设置后的Calendar对象计算这个月份有多少天

getDate(new_year, new_month, new_week, Max_Day);

}

} catch (NumberFormatException excption) {

System.out.println("你输入的年份不正确!");

}

}

}

// 鼠标单击右边按钮触发的事件

class myMouseListener2 extends MouseAdapter {

public void mouseClicked(MouseEvent e) {

String str = tf.getText().trim();

int i = Integer.parseInt(str);

i = i + 1;

tf.setText(String.valueOf(i));

String new_year = String.valueOf(i); // 把表示年份的文本框的值存放到变量new_year里

ca.set(Calendar.YEAR, i); // 把Calendar 对象的YEAR设置为用户设置的年份

String new_month = (String) jb.getSelectedItem(); // 得到月份值

ca.set(Calendar.MONTH, Integer.parseInt(new_month) - 1); // 把Calendar对象的MONTH设置为用户设置的月份

ca.set(Calendar.DATE, 1); // 把Calendar 对象的DATA设置为1

String new_week = String.valueOf(ca.get(Calendar.DAY_OF_WEEK)); // 根据设置的Calendar对象,计算出这个月第一天是星期几

int Max_Day = ca.getActualMaximum(Calendar.DATE); // 根据设置后的Calendar对象计算这个月份有多少天

getDate(new_year, new_month, new_week, Max_Day);

}

}

// 鼠标单击选择框触发的事件

class myActionListener3 implements ActionListener {

public void actionPerformed(ActionEvent e) {

String new_year = String.valueOf(ca.get(Calendar.YEAR)); // 把表示年份的文本框的值存放到变量new_year里

String new_month = (String) jb.getSelectedItem(); // 得到用户设置的月份

ca.set(Calendar.MONTH, Integer.parseInt(new_month) - 1); // 把Calendar对象的月份值设置为用户定义的月份

ca.set(Calendar.DATE, 1); // 把Calendar 对象的DATA设置为1

String new_week = String.valueOf(ca.get(Calendar.DAY_OF_WEEK)); // 根据设置的Calendar对象,计算出这个月第一天是星期几

int Max_Day = ca.getActualMaximum(Calendar.DATE); // 根据设置后的Calendar对象计算这个月份有多少天

getDate(new_year, new_month, new_week, Max_Day);

}

}

// 重画组件

private class PaintThread implements Runnable {

public void run() {

while (true) {

repaint();

try {

Thread.sleep(100);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}

}

用JAVA做日历,要求源代码

import java.util.Scanner; public class Wan{ public static void main(String[] args){ Scanner name = new Scanner(System.in); System.out.print("请输入要查询的年份:"); int year = name.nextInt(); System.out.print("请输入该年的月份"); int month = name.nextInt(); } //累加 该年至输入的月份 天数 //比如 输入2009年的 3月分 // 那就累加 2009年的1月至 3月1号的总天数 public void sumDay(int year,int month){ int day = 0; int sumDay = 0; for(int i = 1;i=month;i++){ switch(i){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: day = 31; break; case 2: if(year % 4 == 0 || year % 400 == 0 year %100!=0){ day = 29; }else{ day = 28; } break; default: day = 30; } //最后一个月份不要累加 因为我们只是要算到该月的一号就可以了 if(i month){ sumDay += day; } } //累加 2000年到该年的一月一号天数 for(int i = 2000;iyear;i++){ if( i % 4 == 0 || i %400== 0 i % 100 != 0){ sumDay += 366; }else{ sumDay += 365; } } //求该月一号为星期几 int week = sumDay % 7 +1; if(week == 7){ week = 0; } } public void fomatDate(int week,int day){ int g = 0; for(int i = 0;iweek;i++){ System.out.print("\t"); } for(int i = 1;i=day;i++){ System.out.print(i+"\t"); g = week + i; if(g % 7 == 0){ System.out.println(); } } } } 给点分哈 写得好累

用java(用calendar类)写一个万年历,输入年并且显示当年的日历

public class MyCalendar {

public static void main(String args[]) {

Scanner sc = new Scanner(System.in);

Calendar c = Calendar.getInstance();

System.out.println("请输入数字年:(比如 2014)");

int year = sc.nextInt();

sc.close();

//      int year = 2014;

c.set(Calendar.YEAR,year);

for (int i = 0; i  12; i++) {

c.set(Calendar.MONTH,i);  //

c.set(Calendar.DATE,1);  //设置成1月

printMonth(c);

}

public static void printMonth(Calendar c){

c.set(Calendar.DAY_OF_MONTH,1);   //设置成一日

System.out.printf("\n\n=========  %s  月  =========\n",c.get(Calendar.MONTH)+1);

String[] weeks = { "日", "一" ,  "二",  "三",  "四",  "五",  "六" };

for (int i = 0; i  weeks.length; i++) {

System.out.printf("%s" + (i != 6 ?"\t":"\n"),weeks[i]);

}

int offday = c.get(Calendar.DAY_OF_WEEK) - 1;

for(int i = 0; i  offday; i++){

System.out.printf("\t");

}

int month = c.get(Calendar.MONTH);

while(c.get(Calendar.MONTH) == month ){

System.out.printf("%d" + ( (c.get(Calendar.DAY_OF_WEEK)) != 7 ? "\t":"\n") ,c.get(Calendar.DAY_OF_MONTH));

c.add(Calendar.DAY_OF_MONTH, 1);

}

}

}


名称栏目:java日历一整年的代码 java编写一个日历
本文来源:http://abwzjs.com/article/ddihehh.html