Java日历
- 格式:docx
- 大小:13.30 KB
- 文档页数:5
calendar用法java在Java中,可以使用java.util.Calendar类来处理日历和日期时间相关的操作。
Calendar类是一个抽象类,提供了许多用于处理日期和时间的方法。
下面是Calendar类的一些常用方法和用法:1.获取Calendar实例:可以通过调用`Calendar.getInstance()`方法来获取一个Calendar实例,该实例会自动初始化为当前的日期和时间。
2.设置日期和时间:可以使用`set()`方法来设置特定的日期和时间,例如:`calendar.set(Calendar.YEAR, 2022)`来设置年份为2022。
3.获取日期和时间:可以使用`get()`方法来获取指定日期和时间的值,例如:`int year = calendar.get(Calendar.YEAR)`来获取年份值。
4.对日期和时间进行加减操作:可以使用`add()`方法来对日期和时间进行加减操作,例如:`calendar.add(Calendar.DAY_OF_MONTH, 1)`表示将日期增加1天。
5.获取一周的第几天:可以使用`get()`方法和`Calendar.DAY_OF_WEEK`参数来获取一周中的第几天,星期日为1,星期一为2,以此类推。
6.格式化日期和时间:可以使用`SimpleDateFormat`类或其他日期时间格式化类来格式化日期和时间。
拓展内容:除了以上介绍的常用方法,Calendar类还提供了一些其他功能,例如:-判断是否为闰年:可以使用`isLeapYear()`方法来判断指定年份是否为闰年。
-比较日期:可以使用`compareTo()`方法来比较两个日期的先后关系。
-判断日期和时间的合法性:可以使用`isValid()`方法来判断指定的日期和时间是否合法。
此外,Java 8及更高版本中,还引入了新的日期和时间API,即java.time包下的相关类,如`LocalDate`、`LocalDateTime`和`ZonedDateTime`等,提供了更多便捷、灵活和线程安全的日期和时间处理功能。
java判断国家法定节假日的方法全文共四篇示例,供读者参考第一篇示例:Java是一种流行的编程语言,用于开发各种应用程序和系统。
在许多情况下,我们需要判断一个日期是否是国家法定的节假日。
这在许多应用程序中都是必须要考虑的一个问题,比如日历应用程序、假期提醒应用程序等等。
在本文中,我们将讨论如何使用Java编程语言来判断国家法定的节假日的方法。
一般来说,判断一个日期是否是节假日,需要先明确该国家的法定节假日的具体规定。
不同的国家有不同的法定节假日,可以是固定日期的,也可以是依据农历等进行计算的。
在此,我们以中国的法定节假日为例来说明如何判断一个日期是否是法定节假日。
我们需要定义中国的法定节假日的规定:1. 元旦:1月1日2. 春节:农历正月初一至正月十五3. 清明节:农历四月四日4. 劳动节:5月1日至5月3日5. 端午节:农历五月五日6. 中秋节:农历八月十五日7. 国庆节:10月1日至10月7日接下来,我们可以通过编写一个Java程序来判断一个日期是否是中国的法定节假日。
我们可以定义一个方法来判断一个日期是否是一个法定节假日,如下所示:```javapublic static boolean isHoliday(int year, int month, int day) {// 判断元旦if (month == 1 && day == 1) {return true;}// 判断春节// 农历春节的日期需要特殊计算,略...// 判断清明节if (month == 4 && day == 4) {return true;}// 判断劳动节if (month == 5 && day >= 1 && day <= 3) { return true;}// 判断端午节// 农历端午节的日期需要特殊计算,略...// 判断中秋节// 农历中秋节的日期需要特殊计算,略...// 判断国庆节if (month == 10 && day >= 1 && day <= 7) { return true;}return false;}```在上述代码中,我们定义了一个`isHoliday`方法,接收年、月、日三个参数,然后根据中国的法定节假日规定,判断该日期是否是法定节假日。
JA V A处理日期时间常用方法:java.util.CalendarCalendar 类是一个抽象类,它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期提供了一些方法。
瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间1970 年 1 月1 日的00:00:00。
000,格里高利历的偏移量.例:Calendar cal = Calendar。
getInstance(;//使用默认时区和语言环境获得一个日历。
cal。
add(Calendar.DAY_OF_MONTH, -1;//取当前日期的前一天。
cal。
add(Calendar。
DAY_OF_MONTH, +1;//取当前日期的后一天。
//通过格式化输出日期java.text.SimpleDateFormat format = new java.text。
SimpleDateFormat(”yyyy-MM—dd";System。
out.println("Today is:”+format。
format(Calendar.getInstance(.getTime (;System。
out.println("yesterday is:"+format.format(cal.getTime(;得到2007—12-25日期: Calendar calendar = new GregorianCalendar(2007,11, 25,0,0,0;Date date = calendar.getTime(;System。
out.println("2007 Christmasis:”+format.format(date;//java月份是从0—11,月份设置时要减1。
//GregorianCalendar构造方法参数依次为:年,月—1,日,时,分,秒。
java日历小程序简介:Java日历小程序是一个基于Java语言开发的工具,用于显示和管理日期和时间。
它提供了一种简单而直观的方式来查看、创建和编辑日历事件,并提供了一些额外的功能,如提醒、重复事件和时间段的计算等。
本文将详细介绍Java日历小程序的功能、使用方法和设计原理。
功能:1. 显示日历:Java日历小程序可以显示当前月份的日历,并以日、周或月的形式展示。
用户可以通过界面上的上下翻页按钮切换月份,方便查看不同日期的日历。
2. 创建和编辑事件:用户可以通过Java日历小程序创建新的日历事件,并为每个事件指定标题、日期、时间和地点等详细信息。
程序还提供了事件编辑功能,允许用户修改已有事件的信息。
3. 提醒功能:Java日历小程序可以设置事件的提醒功能,提醒用户在指定的时间前提醒。
用户可以选择在事件开始前几分钟、几小时或几天提醒,并可以自定义提醒方式,如弹窗、声音或邮件通知等。
4. 重复事件:用户可以为事件设置重复功能,使事件在指定的日期间隔内重复发生。
可以选择每天、每周、每月或每年重复,并可以设置重复的结束日期。
5. 时间段计算:Java日历小程序可以计算两个日期之间的时间段,如计算两个事件之间的天数、小时数或分钟数等。
用户可以选择计算方式,并获取精确的时间段结果。
使用方法:1. 下载和安装:用户可以从官方网站上下载Java日历小程序的安装包,然后按照安装向导进行安装。
安装完成后,用户可以在桌面或开始菜单中找到程序的快捷方式。
2. 打开程序:双击程序的快捷方式,Java日历小程序将启动并显示当前月份的日历。
用户可以通过界面上的按钮和菜单来使用各种功能。
3. 创建事件:用户可以点击界面上的“添加事件”按钮,弹出一个对话框,输入事件的详细信息,如标题、日期、时间和地点等。
点击“确定”按钮后,事件将被创建并显示在日历上。
4. 编辑事件:用户可以在日历上点击已有的事件,弹出一个对话框,允许用户修改事件的信息。
java⽇历编写代码 //Jcalendar.javaimport java.awt.BorderLayout;import java.awt.Color;import java.awt.Dimension;import java.awt.GridLayout;import java.awt.SystemColor;import java.awt.event.ActionEvent;import java.awt.event.KeyEvent;import java.awt.event.MouseEvent;import java.util.Calendar;import java.util.GregorianCalendar;import java.util.Locale;import java.util.Date;import java.util.StringTokenizer;import javax.swing.BorderFactory;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;import javax.swing.JToggleButton;import javax.swing.SwingConstants;import javax.swing.UIManager;/*** <p>Title: Swing⽇历</p>* <p>Description: 操作⽇期</p>* @author duxu2004* @version 1.0.1*/class JCalendar extends JPanel{//动态表⽰年⽉⽇private int year=0;private int month=0;private int day=0;//主⾯板private JPanel Main = new JPanel();//⽇⾯板private JPanel jPanelDay = new JPanel();//⽉⾯板private JPanel jPanelMonth = new JPanel();//年的输⼊位置private JTextField Year = new JTextField();//⽉的输⼊位置private JTextField Month = new JTextField();//减少⽉份private JButton MonthDown = new JButton();//增加⽉份private JButton MonthUp = new JButton();private JPanel jPanelButton = new JPanel();//减少年份private JButton YearDown = new JButton();//增加年份private JButton YearUp = new JButton();//显⽰⽇期的位置private JLabel Out = new JLabel();//中国时区,以后可以从这⾥扩展可以设置时区的功能private Locale l=Locale.CHINESE;//主⽇历private GregorianCalendar cal=new GregorianCalendar(l);//星期⾯板private JPanel weekPanel=new JPanel();//天按钮组private JToggleButton[] days=new JToggleButton[42];//天⾯板private JPanel Days = new JPanel();//标⽰private JLabel jLabel1 = new JLabel();private JLabel jLabel2 = new JLabel();private JLabel jLabel3 = new JLabel();private JLabel jLabel4 = new JLabel();private JLabel jLabel5 = new JLabel();private JLabel jLabel6 = new JLabel();private JLabel jLabel7 = new JLabel();//当前选择的天数按钮private JToggleButton cur=null;//⽉份天数数组,⽤来取得当⽉有多少天// 1 2 3 4 5 6 7 8 9 10 11 12private int[] mm={31,28,31,30,31,30,31,31,30,31,30,31}; //空⽇期构造函数public JCalendar() {try {jbInit();}catch(Exception e) {e.printStackTrace();}}//带⽇期设置的构造函数public JCalendar(int year, int month, int day) {cal.set(year, month, day);try {jbInit();}catch (Exception e) {e.printStackTrace();}}//带⽇历输⼊的构造函数public JCalendar(GregorianCalendar calendar) {cal=calendar;try {jbInit();}catch (Exception e) {e.printStackTrace();}}//带⽇期输⼊的构造函数public JCalendar(Date date) {cal.setTime(date);try {jbInit();}catch (Exception e) {e.printStackTrace();}}//初始化组件private void jbInit() throws Exception {//初始化年、⽉、⽇iniCalender();this.setLayout(new BorderLayout());this.setBorder(BorderFactory.createRaisedBevelBorder()); this.setMaximumSize(new Dimension(200, 200));this.setMinimumSize(new Dimension(200, 200));this.setPreferredSize(new Dimension(200, 200));Main.setLayout(new BorderLayout());Main.setBackground();Main.setBorder(null);Out.setBackground(Color.lightGray);Out.setHorizontalAlignment(SwingConstants.CENTER);Out.setMaximumSize(new Dimension(100, 19));Out.setMinimumSize(new Dimension(100, 19));Out.setPreferredSize(new Dimension(100, 19));jLabel1.setForeground(Color.red);jLabel1.setHorizontalAlignment(SwingConstants.CENTER);jLabel1.setHorizontalTextPosition(SwingConstants.CENTER);jLabel1.setText("⽇");jLabel2.setForeground(Color.blue);jLabel2.setHorizontalAlignment(SwingConstants.CENTER);jLabel2.setHorizontalTextPosition(SwingConstants.CENTER);jLabel2.setText("六");jLabel3.setHorizontalAlignment(SwingConstants.CENTER);jLabel3.setHorizontalTextPosition(SwingConstants.CENTER);jLabel3.setText("五");jLabel4.setHorizontalAlignment(SwingConstants.CENTER);jLabel4.setHorizontalTextPosition(SwingConstants.CENTER);jLabel4.setText("四");jLabel5.setHorizontalAlignment(SwingConstants.CENTER);jLabel5.setHorizontalTextPosition(SwingConstants.CENTER);jLabel5.setText("三");jLabel6.setBorder(null);jLabel6.setHorizontalAlignment(SwingConstants.CENTER);jLabel6.setHorizontalTextPosition(SwingConstants.CENTER);jLabel6.setText("⼆");jLabel7.setBackground(Color.lightGray);jLabel7.setForeground(Color.black);jLabel7.setBorder(null);jLabel7.setHorizontalAlignment(SwingConstants.CENTER);jLabel7.setHorizontalTextPosition(SwingConstants.CENTER);jLabel7.setText("⼀");weekPanel.setBackground(UIManager.getColor("InternalFrame.activeTitleGradient")); weekPanel.setBorder(BorderFactory.createEtchedBorder());weekPanel.setLayout(new GridLayout(1,7));weekPanel.add(jLabel1, null);weekPanel.add(jLabel7, null);weekPanel.add(jLabel6, null);weekPanel.add(jLabel5, null);weekPanel.add(jLabel4, null);weekPanel.add(jLabel3, null);weekPanel.add(jLabel2, null);MonthUp.setAlignmentX((float) 0.0);MonthUp.setActionMap(null);jPanelMonth.setBackground();jPanelMonth.setLayout(new BorderLayout());jPanelMonth.setBorder(BorderFactory.createEtchedBorder());Month.setBorder(null);Month.setHorizontalAlignment(SwingConstants.CENTER);Month.addMouseListener(new java.awt.event.MouseAdapter() {public void mouseClicked(MouseEvent e) {Month_mouseClicked(e);}});Month.addKeyListener(new java.awt.event.KeyAdapter() {public void keyPressed(KeyEvent e) {Month_keyPressed(e);}});MonthDown.setBorder(null);MonthDown.setText("\u25C4");MonthDown.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(ActionEvent e) {MonthDown_actionPerformed(e);}});MonthUp.setBorder(null);MonthUp.setText("\u25BA");MonthUp.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(ActionEvent e) {MonthUp_actionPerformed(e);}});jPanelButton.setLayout(null);jPanelButton.setBorder(null);jPanelButton.addComponentListener(new ponentAdapter() { public void componentResized(ponentEvent evt) { jPanelButtonComponentResized(evt);}});Year.setBorder(BorderFactory.createEtchedBorder());Year.setMaximumSize(new Dimension(80, 25));Year.setMinimumSize(new Dimension(80, 25));Year.setPreferredSize(new Dimension(80, 25));Year.setHorizontalAlignment(SwingConstants.CENTER);Year.addMouseListener(new java.awt.event.MouseAdapter() {public void mouseClicked(MouseEvent e) {Year_mouseClicked(e);}});Year.addKeyListener(new java.awt.event.KeyAdapter() {public void keyPressed(KeyEvent e) {Year_keyPressed(e);}});YearDown.setBorder(null);YearDown.setMaximumSize(new Dimension(16, 16));YearDown.setMinimumSize(new Dimension(16, 16));YearDown.setPreferredSize(new Dimension(16, 16));YearDown.setSize(new Dimension(16, 16));YearDown.setText("▼");YearDown.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(ActionEvent e) {YearDown_actionPerformed(e);}});YearUp.setBorder(null);YearUp.setMaximumSize(new Dimension(16, 16));YearUp.setMinimumSize(new Dimension(16, 16));YearUp.setPreferredSize(new Dimension(16, 16));YearUp.setSize(new Dimension(16, 16));YearUp.setText("▲");YearUp.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(ActionEvent e) {YearUp_actionPerformed(e);}});jPanelDay.setLayout(new BorderLayout());Days.setLayout(new GridLayout(6,7));Days.setBackground();for(int i=0;i<42;i++){days[i]=new JToggleButton();days[i].setBorder(null);days[i].setBackground();days[i].setHorizontalAlignment(SwingConstants.CENTER);days[i].setHorizontalTextPosition(SwingConstants.CENTER);//days[i].setSize(l,l);days[i].addActionListener(new java.awt.event.ActionListener(){public void actionPerformed(ActionEvent e) {day=Integer.parseInt(((JToggleButton)e.getSource()).getText());showDate();showDays();}});Days.add(days[i]);}this.add(Main, BorderLayout.NORTH);this.add(jPanelDay, BorderLayout.CENTER);this.add(jPanelMonth, BorderLayout.SOUTH);Main.add(Year, BorderLayout.CENTER);Main.add(Out, BorderLayout.WEST);Main.add(jPanelButton, BorderLayout.EAST);jPanelButton.add(YearUp);jPanelButton.add(YearDown);jPanelDay.add(weekPanel,BorderLayout.NORTH);jPanelDay.add(Days, BorderLayout.CENTER);jPanelMonth.add(Month, BorderLayout.CENTER);jPanelMonth.add(MonthDown, BorderLayout.WEST);jPanelMonth.add(MonthUp, BorderLayout.EAST);showMonth();showYear();showDate();showDays();}//⾃定义重画年选择⾯板void jPanelButtonComponentResized(ponentEvent evt){YearUp.setLocation(0,0);YearDown.setLocation(0,YearUp.getHeight());jPanelButton.setSize(YearUp.getWidth(),YearUp.getHeight()*2);jPanelButton.setPreferredSize(new Dimension(YearUp.getWidth(),YearUp.getHeight()*2)); jPanelButton.updateUI();}//测试⽤public static void main(String[] args){JFrame f=new JFrame();f.setContentPane(new JCalendar());f.pack();//f.setResizable(false);f.show();}//增加年份void YearUp_actionPerformed(ActionEvent e) {year++;showYear();showDate();showDays();}//减少年份void YearDown_actionPerformed(ActionEvent e) {year--;showYear();showDate();showDays();}//减少⽉份void MonthDown_actionPerformed(ActionEvent e) {month--;if(month<0) {month = 11;year--;showYear();}showMonth();showDate();showDays();}//增加⽉份void MonthUp_actionPerformed(ActionEvent e) {month++;if(month==12) {month=0;year++;showYear();}showMonth();showDate();showDays();}//初始化年⽉⽇void iniCalender(){year=cal.get(Calendar.YEAR);month=cal.get(Calendar.MONTH);day=cal.get(Calendar.DAY_OF_MONTH);}//刷新⽉份void showMonth(){Month.setText(Integer.toString(month+1)+"⽉");}//刷新年份void showYear(){Year.setText(Integer.toString(year)+"年");}//刷新⽇期void showDate(){Out.setText(Integer.toString(year)+"-"+Integer.toString(month+1)+"-"+Integer.toString(day)); }//重画天数选择⾯板void showDays() {cal.set(year,month,1);int firstDayOfWeek = cal.get(Calendar.DAY_OF_WEEK);int n=mm[month];if(cal.isLeapYear(year)&&month==1) n++;int i=0;for(;i<firstDayOfWeek-1;i++){days[i].setEnabled(false);days[i].setSelected(false);days[i].setText("");}int d=1;for(;d<=n;d++){days[i].setText(Integer.toString(d));days[i].setEnabled(true);if(d==day) days[i].setSelected(true);else days[i].setSelected(false);;i++;}for(;i<42;i++){days[i].setEnabled(false);days[i].setSelected(false);days[i].setText("");}}//单击年份⾯板选择整个年份字符串void SelectionYear(){Year.setSelectionStart(0);Year.setSelectionEnd(Year.getText().length());}//单击⽉份⾯板选择整个⽉份字符串void SelectionMonth(){Month.setSelectionStart(0);Month.setSelectionEnd(Month.getText().length());}//⽉份⾯板响应⿏标单击事件void Month_mouseClicked(MouseEvent e) {//SelectionMonth();inputMonth();}//检验输⼊的⽉份void inputMonth(){String s;if(Month.getText().endsWith("⽉")){s=Month.getText().substring(0,Month.getText().length()-1); }else s=Month.getText();month=Integer.parseInt(s)-1;this.showMe();}//⽉份⾯板键盘敲击事件响应void Month_keyPressed(KeyEvent e) {if(e.getKeyChar()==10)inputMonth();}//年份⾯板响应⿏标单击事件void Year_mouseClicked(MouseEvent e) {//SelectionYear();inputYear();}//年份键盘敲击事件响应void Year_keyPressed(KeyEvent e) {//System.out.print(new Integer(e.getKeyChar()).byteValue()); if(e.getKeyChar()==10)inputYear();}//检验输⼊的年份字符串void inputYear() {String s;if(Year.getText().endsWith("年")){s=Year.getText().substring(0,Year.getText().length()-1); }else s=Year.getText();year=Integer.parseInt(s);this.showMe();}//以字符串形式返回⽇期,yyyy-mm-ddpublic String getDate(){return Out.getText();}//以字符串形式输⼊⽇期,yyyy-mm-ddpublic void setDate(String date){if(date!=null){StringTokenizer f = new StringTokenizer(date, "-");if(f.hasMoreTokens())year = Integer.parseInt(f.nextToken());if(f.hasMoreTokens())month = Integer.parseInt(f.nextToken());if(f.hasMoreTokens())day = Integer.parseInt(f.nextToken());cal.set(year,month,day);}this.showMe();}//以⽇期对象形式输⼊⽇期public void setTime(Date date){cal.setTime(date);this.iniCalender();this.showMe();}//返回⽇期对象public Date getTime(){return cal.getTime();}//返回当前的⽇public int getDay() {return day;}//设置当前的⽇public void setDay(int day) {this.day = day;cal.set(this.year,this.month,this.day);this.showMe();}//设置当前的年public void setYear(int year) {this.year = year;cal.set(this.year,this.month,this.day);this.showMe();}//返回当前的年public int getYear() {return year;}//返回当前的⽉public int getMonth() {return month;}//设置当前的⽉public void setMonth(int month) {this.month = month;cal.set(this.year,this.month,this.day); this.showMe();}//刷新public void showMe(){this.showDays();this.showMonth();this.showYear();this.showDate();}}测试代码JFrame f=new JFrame();f.setContentPane(new JCalendar());f.pack();//f.setResizable(false);// f.show();f.setVisible(true);。
第一篇:JAVA编写日历实训心得班级:**** 姓名:*** 学号:****10010127 java实验报告实验7 日历一、实验目的1. 掌握swt 的容器概念及使用方法。
2. 掌握swt 中的工具栏与菜单的使用方法。
3. 掌握swt 中的表格组件的使用。
4. 掌握swt 各种对话框的使用方法。
二、实验内容:简单日历系统的设计与实现。
三、实验步骤:1. 简单日历系统的设计与实现1) 创建java 类。
在“包资源管理器”中用鼠标右击项目“practical”,选择快捷菜单中“新建”→“visual class”;在打开的“new java visual class ”窗口中,“源文件夹”的默认值是项目的文件夹,不需要更改,“包”栏中输入程序包的名称“ch7”。
“名称”栏中输入类名“su”,在“style ”列表框中选择“swt”→“shell”,选中“public static void main(string[] args) ”复选框,使之自动创建一个main 方法,单击“完成”按钮,一个含有gui 程序界面以及代码的编辑器窗口被打开。
2) 添加组件。
用鼠标右键单击gui 程序界面的任何位置,在快捷菜单中选择“set layout”→“filllayout”。
在“palette”面板中用鼠标单击“swt containers ”中的“viewform”,在程序界面sshell 中添加viewform 容器viewform 。
从pallete 工具栏中依次单击组件:toolbar 和table ,在viewform 容器添加一个工具栏toolbar 和一个表格table ,并在工具栏toolbar 中添加4 个工具栏按钮toolitem~toolitem3;在表格中添加7 个表列tablecolumn~tablecolumn6 。
更改4 个工具栏按钮的text 属性分别为“上一年”、“上个月”、“下个月”和“下一年”;更改7 个表列的text 属性分别为“日”~“六”,如图下所示。
java 年月日的枚举值在Java中,可以使用Java 8中引入的java.time包中的枚举类型来表示年、月、日。
具体来说,可以使用Year、Month和DayOfWeek枚举类型来分别表示年、月和星期几。
1. Year枚举类型:Year枚举类型用于表示年份,它可以通过静态方法Year.now()获取当前的年份,也可以使用of()方法指定特定的年份。
例如:java.Year currentYear = Year.now();Year specificYear = Year.of(2022);2. Month枚举类型:Month枚举类型用于表示月份,它包括了1月到12月的枚举常量。
可以通过静态方法Month.valueOf("JANUARY")来获取特定月份的枚举常量,也可以直接使用Month.JANUARY这样的方式来表示月份。
例如:java.Month currentMonth = Month.JANUARY;Month specificMonth = Month.valueOf("FEBRUARY");3. DayOfWeek枚举类型:DayOfWeek枚举类型用于表示星期几,它包括了MONDAY到SUNDAY的枚举常量。
可以通过静态方法DayOfWeek.valueOf("MONDAY")来获取特定星期几的枚举常量,也可以直接使用DayOfWeek.MONDAY这样的方式来表示星期几。
例如:java.DayOfWeek currentDay = DayOfWeek.MONDAY;DayOfWeek specificDay = DayOfWeek.valueOf("TUESDAY");通过使用这些枚举类型,可以方便地表示和操作年、月、日的值,使得日期和时间的处理更加直观和简洁。
同时,Java 8中引入的新的日期时间API也提供了丰富的方法来对日期进行计算、格式化和解析,枚举类型的使用使得这些操作更加方便和安全。
java年月日的枚举
在Java中,可以使用枚举类型来表示年、月、日。
首先,我们可以创建一个枚举类型来表示年份,如下所示:
java.
public enum Year {。
YEAR_2022,。
YEAR_2023,。
// 其他年份。
}。
接着,我们可以创建一个枚举类型来表示月份,如下所示:
java.
public enum Month {。
JANUARY,。
FEBRUARY,。
MARCH,。
// 其他月份。
}。
最后,我们可以创建一个枚举类型来表示日期,如下所示: java.
public enum Day {。
DAY_1,。
DAY_2,。
// 其他日期。
}。
通过这样的枚举类型,我们可以在程序中很方便地表示和操作年、月、日。
例如,我们可以使用这些枚举类型来构建日期对象,进行日期的比较和计算等操作。
另外,Java也提供了`java.time`包,其中包含了丰富的日期和时间操作类,可以更方便地处理日期时间相关的操作。
总的来说,使用枚举类型来表示年、月、日可以使代码更加清晰易懂,同时也有利于程序的可维护性和扩展性。
希望这些信息能够帮助到你。
Java获取年月日的方法在Java编程中,我们经常需要获取当前的年、月和日。
这些信息在许多应用程序中都是必需的,例如日历应用、日期处理和数据分析等。
本文将介绍几种获取年月日的方法,帮助你在Java中轻松地处理日期。
1. 使用Java.util.Date类Java.util.Date类是Java中处理日期和时间的基本类之一。
要获取当前的年、月和日,可以使用以下代码:import java.util.Date;import java.text.SimpleDateFormat;public class Main {public static void main(String[] args) {Date date = new Date();SimpleDateFormat sdfYear = new SimpleDateFormat("yyyy");SimpleDateFormat sdfMonth = new SimpleDateFormat("MM");SimpleDateFormat sdfDay = new SimpleDateFormat("dd");String year = sdfYear.format(date);String month = sdfMonth.format(date);String day = sdfDay.format(date);System.out.println("Year: " + year);System.out.println("Month: " + month);System.out.println("Day: " + day);}}在上面的代码中,我们使用了SimpleDateFormat类来格式化日期。
通过传入不同的格式化模式,我们可以获取所需的日期部分。
package pack;import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Calendar;import java.util.Date;public class rili extends JFrame implements ActionListener { JButton b_today, b_query;JLabel lb_Year, lb_Month;JButton b_week[] = new JButton[7];JButton b_day[][] = new JButton[6][7];Container thisContainer;JPanel pUp;JPanel pCenter;JPanel pCenter_week, pCenter_day;JComboBox year, month;public void init() {b_today = new JButton("Today");b_query = new JButton("Query");setTitle("日历");lb_Year = new JLabel("Year");lb_Month = new JLabel("Month");year = new JComboBox();month = new JComboBox();setDate();pUp = new JPanel();pUp.add(lb_Year);pUp.add(year);pUp.add(lb_Month);pUp.add(month);pUp.add(b_today);pUp.add(b_query);b_today.addActionListener(this);b_query.addActionListener(this);pCenter = new JPanel();pCenter_week = new JPanel();b_week[0] = new JButton("星期日");b_week[1] = new JButton("星期一");b_week[2] = new JButton("星期二");b_week[3] = new JButton("星期三");b_week[4] = new JButton("星期四");b_week[5] = new JButton("星期五");b_week[6] = new JButton("星期六");b_week[0].setSize(400, 200);b_week[1].setSize(400, 200);b_week[2].setSize(400, 200);b_week[3].setSize(400, 200);b_week[4].setSize(400, 200);b_week[5].setSize(400, 200);b_week[6].setSize(400, 200);for (int i = 0; i < 7; i++) {b_week[i].setEnabled(false);pCenter_week.add(b_week[i]);}pCenter_day = new JPanel();for (int cols = 0; cols < 6; cols++) {for (int rows = 0; rows < 7; rows++) {b_day[cols][rows] = new JButton("");b_day[cols][rows].setSize(400, 200);this.pCenter_day.add(b_day[cols][rows]);}}pCenter_day.setLayout(new GridLayout(6, 7));setDay(Integer.parseInt(this.year.getSelectedItem().toString()),Integer.parseInt(this.month.getSelectedItem().toString()));// setDay(2011,2);pCenter.setLayout(new BorderLayout());pCenter.add(pCenter_week, "North");pCenter.add(pCenter_day, "Center");thisContainer = this.getContentPane();thisContainer.setLayout(new BorderLayout());thisContainer.add(pUp, "North");thisContainer.add(pCenter, "Center");this.setVisible(true);this.setResizable(false);this.pack();}public void setDate() {int year, month, day, week;Calendar cal = Calendar.getInstance();year = cal.get(Calendar.YEAR);month = cal.get(Calendar.MONTH);day = cal.get(Calendar.DA TE);week = cal.get(Calendar.WEEK_OF_YEAR);int year_temp = year - 4;for (int i = 0; i < 10; i++) {this.year.addItem(year_temp);year_temp += 1;}this.year.setSelectedIndex(4);for (int n = 0; n < 12; n++) {this.month.addItem(n + 1);}this.month.setSelectedIndex(month);}public void setDay(int Year, int Month) {int count;Calendar c = Calendar.getInstance();c.clear();c.set(Year, Month-1, 1);count = c.getActualMaximum(Calendar.DAY_OF_MONTH); // 总天数System.out.print(count);int day = c.get(Calendar.DAY_OF_WEEK) - 1; // 0为星期天,6为星期六System.out.print(day);int i = 1 - day;for (int cols = 0; cols < 6; cols++) {for (int rows = 0; rows < 7; rows++) {String st = String.valueOf(i);b_day[cols][rows].setText(st);b_day[cols][rows].setEnabled(false);if (i > 0 && i <= count)b_day[cols][rows].setVisible(true);elseb_day[cols][rows].setVisible(false);i++;}}}public void actionPerformed(ActionEvent e) {if (e.getSource() == b_query) {this.setDay(Integer.parseInt(this.year.getSelectedItem().toString()), Integer.parseInt(this.month.getSelectedItem().toString()));}if (e.getSource() == b_today) {int year, month;Calendar cal = Calendar.getInstance();year = cal.get(Calendar.YEAR);month = cal.get(Calendar.MONTH)+1;this.setDay(year,month);}}public static void main(String[] args) {rili rl = new rili();rl.init();}}。
java日历当天日期标红练习一个日历例子,输出一个日历,显示当前日期为红色主要的理解和掌握点是:1、使用Date()函数。
2、根据天数计算日历的长度,主要是行,因为列是固定的,一周只有7天。
3、根据天数计算各天放置的单元格位置。
4、每月第一天的特殊处理。
5、很多时候是从索引0开始计算,例如0-11代表12个月之类。
6、一个包括12个月的天数的数组。
function is_leap(year){return(year%100==0?res=(year%400==0?1:0):res=(year%4==0 1:0));}//是否为闰年var nstr=new Date();//当前Date资讯var ynow=nstr.getFullYear();//年份var mnow=nstr.getMonth();//月份var dnow=nstr.getDate();//今日日期var n1str=new Date(ynow,mnow,1);//传入获取到的年月,并且日设置为1,获取当月的第一天的日期信息var firstday=n1str.getDay();//当月第一天星期几var m_days=new Array(31,28+is_leap(ynow),31,30,31,30,31,31,30,31,30,31);//各月份的总天数//月份天数+第一天星期几除以7,获取整数行数,然后取整,得到表格所需要行数,即这个月的天数需要排多少行var tr_str=Math.ceil((m_days[mnow]+firstday)/7);//打印表格第一行(有星期标志)(表头)document.write("<tableborder='1'align='center'width='220'cellspacing='0'><tr><td align='center'>日</td><td align='center'>一</td><tdalign='center'>二</td><td align='center'>三</td><tdalign='center'>四</td><td align='center'>五</td><tdalign='center'>六</td></tr>");//举例是2016年12月,有31天for(var i=0;i<tr_str;i++){//表格的行,根据当前月份的天数来确定这个月要排多少行document.write("<tr>");//表格的行开始for(var k=0;k<7;k++){//表格每行的单元格,每行只有7格,0-6//单元格自然序列号,当前行号乘以7再加上当前行的空格号idx=i*7+k;//例如第一行的第一格就是0x7+0=0date_str=idx-firstday+1;//计算日期,例如第一行第一格就是0-当月的第一天(目前当月第一天是周四即4)+1,等于-3是一个负数,负数会显示空格(参看下面)//控制日期的值在不同的星期里面显示,如果20号是周一的话,那么就要放在周一的列里面,如此类推(date_str<=0||date_str>m_days[mnow])//过滤无效日期(小于等于零的、大于月总天数的)date_str=" "//显示空格:date_str=idx-firstday+1;//打印日期:今天底色为红date_str==dnowdocument.write("<tdalign='center'bgcolor='red'>"+date_str+"</td>"):document.write("<tdalign='center'>"+date_str+"</td>");}document.write("</tr>");//表格的行结束}document.write("</table>");//表格结束。
JAVA常⽤API:⽇历类CalendarCalendar⽇历类在Date后出现,替换了很多Date类的⽅法。
该类将所有可能⽤到的时间信息封装为静态成员变量,⽅便获取。
Calendar为抽象类,由于语⾔的敏感性,Calendar类在创建对象时并⾮直接通过⼦类创建,⽽是通过静态⽅法创建,将语⾔敏感内容处理好,再返回⼦类对象Calendar ca = Calendar.getInstance();⼀、Calendar类的常⽤⽅法get(int field);返回intCalendar ca = Calendar.getInstance();获取年int year = ca.get(Calendar.YEAR); //类名直接调⽤静态属性获取⽉int month = ca.get(Calendar.MONTH);获取⽇int day = ca.get(Calendar.DAY_OF_MONTH);/*字段:年:YEAR⽉:MONTH ⽉从0开始,0-11,故得到⽉应+1⽇:DAY_OF_MONTH,天:DATE(与DAY_OF_MONTH同)时:HOUR分:MINUTE秒:SECOND*/2. add⽅法,对指定字段增加某值. add(Calendar.属性名,int 增加的量)Calendar ca = Calendar.getInstance();//把对象ca内的时间修改为3天后ca.add(Calendar.DATE,3);//修改对象ca内的时间为5⼩时后ca.add(Calendar.HOUR,5);2. set⽅法,对指定字段进⾏设置, set(Calendar.属性名,int 设置的值);Calendar ca = Calendar.getInstance();设置时间为2018年8⽉8⽇ca.set(Calendar.YEAR,2018);ca.set(Calendar.MONTH,7);ca.set(Calendar.DATE,8);⼀次性设置三个ca.set(2018,7,8);3. getTime(); 返回⼀个Date对象Calendar ca = Calendar.getInstance();Date date = ca.getTime();。
Java时间类-Calendar、Date、LocalDateLocalTime1、Date 类 java.util.Date是⼀个“万能接⼝”,它包含⽇期、时间,还有毫秒数,如果你只想⽤java.util.Date存储⽇期,或者只存储时间,那么,只有你知道哪些部分的数据是有⽤的,哪些部分的数据是不能⽤的。
1.1 Date的构造⽅法 Date 是我们使⽤的最多的⼀个⽇期类,Date提供的构造⽅法在官⽅API中有⼀下⼏种: Date 类提供了多种构造⽅法,但是⽬前有很多⽅法都已经不建议使⽤public Date() {this(System.currentTimeMillis());}public Date(long date) {fastTime = date;}@Deprecatedpublic Date(int year, int month, int date) {this(year, month, date, 0, 0, 0);}@Deprecatedpublic Date(int year, int month, int date, int hrs, int min) {this(year, month, date, hrs, min, 0);}@Deprecatedpublic Date(int year, int month, int date, int hrs, int min, int sec)@Deprecatedpublic Date(String s) {this(parse(s));} ⽬前我们可以通过使⽤:Date date0 = new Date();Date date1 = new Date(time); 这两种⽅法创建对象的不同主要是通过指定的时间戳不同,通过设置Date 中的fastTime 进⾏设置Date 对象的时间。
除了使⽤构造⽅法获取实例,Date 还可以通过Instant来创建⼀个Date 实例:Instant instant = Instant.now();Date date = Date.from(instant); Instant 是Java 8 提供的新特性: 1.2 Date的常⽤⽅法 Date 类中,提供了常⽤的获取:年,⽉,⽇,时,分,秒等⽅法:Date date = new Date();int dates = date.getDate();int year = date.getYear();int month = date.getMonth();int day = date.getDay();int hours = date.getHours();int min = date.getMinutes();int second = date.getSeconds();long time = date.getTime();int times = date.getTimezoneOffset(); 输出结果:dates: 14year: 116month: 11day: 3hours: 15min: 8second: 29time: 1481699309422times: -480 读者可能会发现,这⾥的年份并不是我们想要的,这⾥主要是因为代码⽅法实现:我们可以看到,这⾥的getYear 并不是获取当前年份,⽽是获取到和1900年的差值,这⾥主要是因为JDK⽼版本遗留下来的问题,对于Date 中获取年⽉⽇的⽅法,现在已经不建议使⽤了。
java 获取当天剩余天数的方法全文共四篇示例,供读者参考第一篇示例:在日常开发中,有时候我们需要计算当天剩余的天数,以便于进行一些定时任务或者提醒等操作。
在Java中,我们可以通过一些简单的方法来获取当天剩余的天数。
本文将介绍几种计算当天剩余天数的方法,以帮助大家在实际项目中使用。
方法一:使用Java Calendar类Java的Calendar类是日历类,能够方便地获取日期和时间信息。
我们可以通过Calendar类计算当天剩余的天数。
具体代码如下:```javaimport java.util.Calendar;public class RemainDaysCalculator {public static void main(String[] args) {Calendar calendar = Calendar.getInstance();int totalDays =calendar.getActualMaximum(Calendar.DAY_OF_YEAR);int currentDay =calendar.get(Calendar.DAY_OF_YEAR);int remainDays = totalDays - currentDay;System.out.println("当天剩余的天数为:" + remainDays);}}```上述代码中,我们首先通过Calendar.getInstance()方法获取当前时间的Calendar对象,然后通过getActualMaximum(Calendar.DAY_OF_YEAR)方法获取今年的总天数,再通过get(Calendar.DAY_OF_YEAR)方法获取当前天是今年的第几天,最后计算剩余的天数并输出。
方法二:使用Java 8的LocalDate类Java 8引入了新的日期时间API,其中包含了LocalDate类,我们也可以通过LocalDate类来计算当天剩余的天数。
Java中的日期时间类是很常用的类,它包含了丰富的日期时间操作方法。
在使用时,我们可以通过构造方法来创建日期时间对象,并对其进行操作。
本文主要介绍Java日期时间类的构造方法,并结合实际案例,帮助读者更好地理解和运用这些构造方法。
一、java.util.Date类的构造方法java.util.Date类是Java中表示日期时间的类,它包含了多个构造方法,用于创建Date对象。
以下列举了其中的几个常用构造方法:1. 无参构造方法Date date = new Date();使用当前系统时间创建Date对象。
2. 以毫秒数为参数的构造方法Date date = new Date(long millis);使用从1970年1月1日00:00:00到指定毫秒数的时间创建Date 对象。
3. 以年、月、日、时、分、秒为参数的构造方法Date date = new Date(int year, int month, int date);使用指定的年、月、日创建Date对象。
二、java.util.Calendar类的构造方法java.util.Calendar类是Java中代表日历的抽象类,它同样包含了多个构造方法,用于创建Calendar对象。
以下列举了其中的几个常用构造方法:1. 使用默认时区和默认区域设置创建Calendar对象Calendar calendar = Calendar.getInstance();使用默认时区和默认区域设置创建Calendar对象。
2. 使用指定时区和区域设置创建Calendar对象Calendar calendar = Calendar.getInstance(TimeZone zone, Locale aLocale);使用指定时区和区域设置创建Calendar对象。
3. 使用年、月、日、时、分、秒为参数创建Calendar对象Calendar calendar = new GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute, int second); 使用指定的年、月、日、时、分、秒创建Calendar对象。
Java获取法定节假日并解析1、接口调用:http://2、具体代码(红色部分为主要解析代码):/*** 日历导入根工具*/public class CalenderUtils {public static void main(String[] args) throws Exception {Prop p = e("jfinal_club_config_dev.txt");DruidPlugin druidPlugin = new DruidPlugin(p.get("jdbcUrl"), p.get("user"), p.get("password").trim());WallFilter wallFilter = new WallFilter();wallFilter.setDbType("mysql");druidPlugin.addFilter(wallFilter);druidPlugin.addFilter(new StatFilter());//me.add(druidPlugin);druidPlugin.start();ActiveRecordPlugin activeRecordPlugin = new ActiveRecordPlugin("mysql", druidPlugin);activeRecordPlugin.setContainerFactory(new CaseInsensitiveContainerFactory(true));_MappingKit.mapping(activeRecordPlugin);activeRecordPlugin.start();//arp.addMapping("c_workday", "id", Workday.class);List<Date> day2019 = getBetweenDates(new SimpleDateFormat("yyyy-MM-dd").parse("2020-01-01"), new SimpleDateFormat("yyyy-MM-dd").parse("2021-01-01"));for (Date day : day2019) {CloseableHttpClient httpCilent = HttpClients.createDefault();HttpGet httpGet = new HttpGet("/api/holiday/info/" + new SimpleDateFormat("yyyy-MM-dd").format(day));try {HttpResponse response = httpCilent.execute(httpGet);String line;JSONObject resultJsonObject;StringBuilder entityStringBuilder = new StringBuilder();BufferedReader b = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8"), 8 * 1024);while ((line = b.readLine()) != null) {entityStringBuilder.append(line);}//利用从HttpEntity中得到的String生成JsonObjectSystem.out.println(new SimpleDateFormat("yyyy-MM-dd").format(day) + "-->" + entityStringBuilder.toString());resultJsonObject = JSON.parseObject(entityStringBuilder.toString());Workday workday = new Workday();workday.setIsDelete(0);workday.setId(StringHELP.getUUID());workday.setDate(day);workday.setPublisher("1");workday.setPublisherName("admin");workday.setPublishDate(new Date());workday.setSubmitDate(new Date());workday.setStatus(0);workday.setStatuscashbag(1);//判断接口请求是否成功if(resultJsonObject.get("code").toString().equals("0")){//获取日期类型,进行相关逻辑处理//首先判断是否是节假日,是的话JSONObject objtype = JSON.parseObject(resultJsonObject.get("type").toString());System.out.println(objtype.get("type").toString());if(objtype.get("type").toString().equals("0")){workday.setType(1);}elseif(objtype.get("type").toString().equals("1")&&resultJsonObject.g et("holiday")==null){workday.setType(0);}else if(resultJsonObject.get("holiday")!=null){JSONObject objholiday = JSON.parseObject(resultJsonObject.get("holiday").toString());if(objholiday.get("holiday").toString().equals("true")){workday.setType(0);}else{workday.setType(1);}}}System.out.println("最终结果:"+workday.getType());//workday.setType(resultJsonObject.getInteger("data") == 0 || resultJsonObject.getInteger("data") == 2 ? 1 : 0);workday.setYear(day.getYear() + 1900);workday.setMonth(day.getMonth() + 1);workday.save();} catch (Exception e) {e.printStackTrace();} finally {try {httpCilent.close();//释放资源} catch (IOException e) {e.printStackTrace();}}}}/*** 获取两个日期之间的日期,包括开始结束日期* @param start 开始日期* @param end 结束日期* @return 日期集合*/private static List<Date> getBetweenDates(Date start, Date end) {List<Date> result = new ArrayList<>();Calendar tempStart = Calendar.getInstance();tempStart.setTime(start);tempStart.add(Calendar.DAY_OF_YEAR, 1);Calendar tempEnd = Calendar.getInstance();tempEnd.setTime(end);result.add(start);while (tempStart.before(tempEnd)) {result.add(tempStart.getTime());tempStart.add(Calendar.DAY_OF_YEAR, 1);}return result;}}。
java中modify()的用法在Java中,modify()方法并不是一个标准的方法,因此需要更具体的上下文来确定它的用法。
下面是几个可能的用法:1. 在Java中,File类中有一个方法叫做lastModified(),它返回文件的最后修改时间。
如果你想改变文件的最后修改时间,你可以使用File类中的setLastModified()方法。
这个方法的用法如下:```File file = new File("path/to/file");long newLastModified = System.currentTimeMillis();file.setLastModified(newLastModified);```这个例子中,我们创建了一个File对象,然后使用System.currentTimeMillis()方法获取当前时间,并将其传递给setLastModified()方法,以更新文件的最后修改时间。
2. 在Java中,有一个叫做java.util.Calendar的类,它表示一个日历。
这个类有一个叫做set()的方法,用于设置日历中的字段。
这个方法的用法如下:```Calendar cal = Calendar.getInstance();cal.set(Calendar.YEAR, 2021);cal.set(Calendar.MONTH, Calendar.JANUARY);cal.set(Calendar.DAY_OF_MONTH, 1);```这个例子中,我们创建了一个Calendar对象,然后使用set()方法设置了年份、月份和日期。
这个方法可以用于设置日历中的任何字段。
3. 在Java中,还有一个叫做java.util.Date的类,它表示一个日期。
这个类有一个叫做setTime()的方法,用于设置日期的时间戳。
这个方法的用法如下:```Date date = new Date();long newTime = System.currentTimeMillis();date.setTime(newTime);```这个例子中,我们创建了一个Date对象,然后使用System.currentTimeMillis()方法获取当前时间,并将其传递给setTime()方法,以更新日期的时间戳。
java 年月日正则表达式
在Java中,可以使用正则表达式来验证日期格式。
以下是一个示例正则表达式,用于匹配年月日格式:
```java
String regex = "^(\\d{4})-(\\d{2})-(\\d{2})$";
```
这个正则表达式的含义是:
`^` 表示字符串的开头
`(\\d{4})` 表示匹配4位数字,即年份
`-` 表示匹配连字符
`(\\d{2})` 表示匹配2位数字,即月份
`-` 表示匹配连字符
`(\\d{2})` 表示匹配2位数字,即日期
`$` 表示字符串的结尾
你可以使用这个正则表达式来验证一个字符串是否符合年月日格式。
例如:
```java
String date = "";
String regex = "^(\\d{4})-(\\d{2})-(\\d{2})$";
boolean isValid = (regex);
```
在这个示例中,`isValid` 变量将为 `true` 如果 `date` 字符串符合年月日格式,否则为 `false`。
package SWT;
import javax.swing.*;
import java.awt.*;
import java.util.Calendar;
import java.util.Date;
import java.awt.event.*;
public class MyCalendar extends JFrame {
JLabel labels[][];//用于设定日历的内容
int months[]={31,28,31,30,31,30,31,31,30,31,30,31};
private int year;//获取是哪一年
private int month;//获取月份的信息
private int days;//看这个月共多少天
private int index;//判断这个月的第一天是周几
JPanel pCenter;
JTextField text;
public static void main(String[]args)
{
MyCalendar calendar = new MyCalendar();
calendar.setVisible(true);
}
/**
*
*/
public MyCalendar()
{
setTitle("章式日历");
setBounds(100,100,356,356);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pCenter = new JPanel();
pCenter.setBackground(Color.pink);
GridLayout gridLayout = new GridLayout(7,7);
gridLayout.setVgap(10);
gridLayout.setHgap(10);
pCenter.setLayout(gridLayout);
getContentPane().add(pCenter,BorderLayout.CENTER);
labels = new JLabel[7][7];
String week[] = {"日","一","二","三","四","五","六"};
for(int i = 0;i < 7;i++)
{
labels[0][i]= new JLabel(week[i]);
pCenter.add(labels[0][i]);
}
for(int i = 1;i < 7;i++)
{
for(int j = 0;j < 7;j++)
{
labels[i][j]= new JLabel(" ");
pCenter.add(labels[i][j]);
}
}
Date date = new Date();
String year1 = String.format("%tY",date);
String month1 = String.format("%tm", date);
year = Integer.valueOf(year1);
month = Integer.valueOf(month1) - 1;
getIndex(year,month);
setArray(index);
JPanel pSouth = new JPanel();
pSouth.setBackground(Color.green);
pSouth.setLayout(new FlowLayout());
String t = "日历:"+year+"年"+(month+1)+"月";
text = new JTextField(t);
text.setEditable(false);
pSouth.add(text);
getContentPane().add(pSouth,BorderLayout.SOUTH);
JPanel pNorth = new JPanel();
pNorth.setBackground(Color.bule);
pNorth.setLayout(new FlowLayout());
JButton previousMonth = new JButton("上月"); JButton nextMonth = new JButton("下月"); previousMonth.addActionListener(new ButtonAction()); nextMonth.addActionListener(new ButtonAction()); pNorth.add(previousMonth);
pNorth.add(nextMonth);
getContentPane().add(pNorth,BorderLayout.NORTH); final JLabel left = new JLabel();
left.setPreferredSize(new Dimension(10,0));
getContentPane().add(left,BorderLayout.WEST);
final JLabel right = new JLabel();
right.setPreferredSize(new Dimension(10,0));
getContentPane().add(right,BorderLayout.EAST);
}
//得到某个月第一天是周几,和这个月共有多少天public void getIndex(int year,int month)
{
this.year = year;
this.month = month;
Calendar calendar = Calendar.getInstance();
calendar.set(year,month,1);
index = calendar.get(Calendar.DAY_OF_WEEK) - 1;
if(month == 1)
{
if(year%100 == 0 && year%400 ==0)
{
days = 29;
}
else if(year%4 == 0 )
{
days = 29;
}
else
days = months[1];
}
else
{
days = months[month];
}
}
//设置数组的填充内容
public void setArray(int index)
{
for(int i = 1;i < 7;i++)
{
for(int j = 0;j < 7;j++)
{
labels[i][j].setText(" ");
}
}
int day = 1;
for(int i = index;i < 7;i++)
{
labels[1][i].setText(String.valueOf(day++));
}
for(int i = 2;i < 7;i++)
{
for(int j = 0;j < 7;j++)
{
if(day<= days)
{
labels[i][j].setText(String.valueOf(day++));
}
}
}
}
class ButtonAction implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
JButton button = (JButton)e.getSource();
String buttonName = e.getActionCommand();
if(buttonName.equals("上月"))
{
month = month-1;
if(month < 0)
{
year = year-1;
month = 11;
}
}
else
{
month = month + 1;
if(month > 11)
{
year = year + 1;
month = 0;
}
}
getIndex(year,month);
setArray(index);
text.setText("日历:"+year+"年"+(month+1)+"月");
}
}
}。