java 制作日历
java控制台输出万年历
import java.util.Scanner;//蔡勒(Zeller)公式(只适合于1582年10月15日之后的情形):w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1//公式中的符号含义如下: c:世纪(年的高两位数); y:年(年的低两位数);//m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,//比如2005年1月1日要看作2004年的13月1日来计算); d:日; []代表取整,即只要整数部分。
//w:星期;w对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四, 5-星期五,6-星期六//以2005年2月14日为例:c=20,y=4,m=14,d=14//w = 4 + [4/4] + [20/4] - 2*20 + [26*(14+1)/10] + 14 - 1 = 4 + 1 + 5 - 40 + 39 + 14 - 1 = 22//(除以7余1) 所以2005年2月14日是星期一。
public class PerpetualCalendarII {public static void main(String[] args) {// declare variable month,yearint month, monthDays = 0, year;int firstDayOfMonth, a, b, w;int count = 0;// declare flagboolean flag;Scanner sc = new Scanner(System.in);System.out.println("请输入年份:");year = sc.nextInt();System.out.println("请输入月份:");month = sc.nextInt();// judge year is leap year or notif ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) { flag = true;} else {flag = false;}// get days of the monthswitch (month) {case 4:case 6:case 9:case 11:monthDays = 30;break;case 1:case 3:case 5:case 7:case 8:case 10:case 12:monthDays = 31;break;case 2:if (flag == true) {monthDays = 29;} else {monthDays = 28;}}// get the true yearif (month == 1) {month = 13;year -= 1;}if (month == 2) {month = 14;year -= 1;}// judge the firstDayOfMontha = year / 100;b = year % 100;// get the value of ww = b + (b / 4) + (a / 4) - 2 * a + 26 * (month + 1) / 10;if (w % 7 == 0) {firstDayOfMonth = 1;} else {firstDayOfMonth = w % 7;}System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");// output \tfor (int i = 0; i < firstDayOfMonth; i++) {System.out.print("\t");count++;}//loop daysfor (int i = 1; i <= monthDays; i++) {System.out.print(i + "\t");count++;if (count % 7 == 0) {System.out.println();}}}}。
Java万年历源代码,可显示公历、农历、系统时间、国际时间
import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.table.DefaultTableModel;import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;import java.util.Locale;import java.util.TimeZone;public class wannianli extends JFrame implements ActionListener, MouseListener {private Calendar cld = Calendar.getInstance();//获取一个Calendar类的实例对象private String[] astr = { "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日" };private DefaultTableModel dtm = new DefaultTableModel(null, astr);private JTable table = new JTable(dtm);private JScrollPane sp = new JScrollPane(table);private JButton bLastYear = new JButton("上一年");private JButton bNextYear = new JButton("下一年");private JButton bLastMonth = new JButton("上月");private JButton bNextMonth = new JButton("下月");private JPanel p1 = new JPanel(); // 设立八个中间容器,装入布局控制日期的按钮模块private JPanel p2 = new JPanel(new GridLayout(3,2));//网格布局private JPanel p3 = new JPanel(new BorderLayout());//边界布局private JPanel p4 = new JPanel(new GridLayout(2,1));private JPanel p5 = new JPanel(new BorderLayout());private JPanel p6 = new JPanel(new GridLayout(2,2));private JPanel p7 = new JPanel(new GridLayout(2,1));private JPanel p8 = new JPanel(new BorderLayout());private JComboBox timeBox = newJComboBox(TimeZone.getAvailableIDs());//对所有支持时区进行迭代,获取所有的id;private JTextField jtfYear = new JTextField(5);// jtfYeaar年份显示输入框private JTextField jtfMonth = new JTextField(2);// jtfMouth月份显示输入框private JTextField timeField=new JTextField();//各城市时间显示框private static JTextArea jta = new JTextArea(10,5);//农历显示区private JScrollPane jsp = new JScrollPane(jta);private JLabel l = new JLabel("花江小精灵:亲!你可以直接输入年月查询.");private JLabel lt = new JLabel();private JLabel ld = new JLabel();private JLabel lu = new JLabel("农历和节气");private JLabel null1=new JLabel();private int lastTime;//private String localTime = null;private String s = null;private SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy年MM月dd 日 hh时mm分ss秒");public wannianli() {super("花江日历过去仅留追忆,未来刚生憧憬,唯有坚守本心,把握今天 ZYT 詹永堂 ");// 框架命名this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 窗口关闭函数this.getContentPane().setLayout(new BorderLayout(9, 10));jta.setLineWrap(true);// 长度大于分配长度时候则换行jta.setFont(new Font("黑体", Font.BOLD, 16));table.setBackground(Color.white);table.setGridColor(Color.pink);// 星期之间的网格线是灰色的table.setBackground(Color.white);table.setColumnSelectionAllowed(true);// 将table中的列设置为可选择的table.setSelectionBackground(Color.pink);// 当选定某一天时背景颜色为黑色table.setSelectionForeground(Color.GREEN);table.setBackground(new Color(184,207, 229));// 日期显示表格为浅蓝色table.setFont(new Font("黑体", Font.BOLD, 24));// 日期数字字体格式table.setRowHeight(26);// 表格的高度table.addMouseListener(this); // 鼠标监听器、lu.setFont(new Font("黑体", Font.BOLD, 22));//农历标签格氏jtfYear.addActionListener(this);// 可输入年份的文本框// 为各个按钮添加监听函数bLastYear.addActionListener(this);bNextYear.addActionListener(this);bLastMonth.addActionListener(this);bNextMonth.addActionListener(this);timeBox.addItemListener(new TimeSelectedChangedListener());// 将按钮添加到Jpane上p1.add(bLastYear);p1.add(jtfYear);// 年份输入文本框p1.add(bNextYear);p1.add(bLastMonth);p1.add(jtfMonth);p1.add(bNextMonth);p3.add(jsp, BorderLayout.SOUTH);p3.add(lu,BorderLayout.CENTER);p3.add(ld, BorderLayout.NORTH);p4.add(lt);p4.add(l);p5.add(p4, BorderLayout.SOUTH);p5.add(sp, BorderLayout.CENTER);p5.add(p1, BorderLayout.NORTH);p6.add(timeBox);p6.add(null1);p6.add(timeField);p8.add(p2,BorderLayout.CENTER);p8.add(p7,BorderLayout.SOUTH);this.getContentPane().add(p3, BorderLayout.EAST);this.getContentPane().add(p5, BorderLayout.CENTER);this.getContentPane().add(p6,BorderLayout.SOUTH);this.getContentPane().add(p8,BorderLayout.WEST);String[] strDate = DateFormat.getDateInstance().format(new Date()) .split("-");// 获取日期cld.set(Integer.parseInt(strDate[0]), Integer.parseInt(strDate[1]) - 1,0);showCalendar(Integer.parseInt(strDate[0]),Integer.parseInt(strDate[1]), cld);jtfMonth.setEditable(false);// 设置月份文本框为不可编辑jtfYear.setText(strDate[0]);jtfMonth.setText(strDate[1]);this.showTextArea(strDate[2]);ld.setFont(new Font("新宋体", Font.BOLD, 24));new Timer(lt).start();new TimeThread().start();this.setBounds(200, 200, 700, 350);this.setResizable(false);this.setVisible(true);}public void showCalendar(int localYear, int localMonth, Calendar cld) {int Days = getDaysOfMonth(localYear, localMonth) +cld.get(Calendar.DAY_OF_WEEK) -2;Object [] ai = new Object[7];lastTime = 0;for (int i = cld.get(Calendar.DAY_OF_WEEK)-1; i <= Days; i++) {ai[i%7] =String.valueOf(i-(cld.get(Calendar.DAY_OF_WEEK)-2));if (i%7 == 6){dtm.addRow(ai);ai = new Object[7];lastTime++;}}dtm.addRow(ai);}public int getDaysOfMonth(int Year, int Month) {//计算各月的天数if(Month==1||Month==3||Month==5||Month==7||Month==8||Month==10||Mont h==12){return 31;}if(Month==4||Month==6||Month==9||Month==11){return 30;}if(Year%4==0&&Year%100!=0||Year%400==0)//闰年{return 29;}else {return 28;}}public void actionPerformed(ActionEvent e)//从界面上获取年月数据{if(e.getSource() == jtfYear || e.getSource() == bLastYear || e.getSource() == bNextYear ||e.getSource() == bLastMonth || e.getSource() == bNextMonth){int m, y;try//控制输入的年份正确,异常控制{if (jtfYear.getText().length() != 4){throw new NumberFormatException();}y = Integer.parseInt(jtfYear.getText());m = Integer.parseInt(jtfMonth.getText());}catch (NumberFormatException ex){JOptionPane.showMessageDialog(this, "请输入4位0-9的数字!", "年份有误", JOptionPane.ERROR_MESSAGE);return;}ld.setText("没有选择日期");for (int i = 0; i < lastTime+1; i++){ dtm.removeRow(0);}if(e.getSource() ==bLastYear){ jtfYear.setText(String.valueOf(--y)); }if(e.getSource() ==bNextYear){jtfYear.setText(String.valueOf(++y)); }if(e.getSource() == bLastMonth){if(m == 1){jtfYear.setText(String.valueOf(--y));m = 12;jtfMonth.setText(String.valueOf(m));}else{jtfMonth.setText(String.valueOf(--m));}}if(e.getSource() == bNextMonth){if(m == 12){jtfYear.setText(String.valueOf(++y));m = 1;jtfMonth.setText(String.valueOf(m));}else{jtfMonth.setText(String.valueOf(++m));}}cld.set(y, m-1, 0);showCalendar(y, m, cld);}}public void mouseClicked(MouseEvent e){jta.setText(null);int r = table.getSelectedRow();int c = table.getSelectedColumn();if (table.getValueAt(r,c) == null){ld.setText("没有选择日期");}else{this.showTextArea(table.getValueAt(r,c));}}private void showTextArea(Object selected){ld.setText(jtfYear.getText()+"年"+jtfMonth.getText()+"月"+selected+"日");}public static void main(String[] args){JFrame.setDefaultLookAndFeelDecorated(true);JDialog.setDefaultLookAndFeelDecorated(true);new wannianli();jta.setText(today());}private void updateTimeText(String timeZoneId) {if(timeZoneId != null){TimeZone timeZone = TimeZone.getTimeZone(timeZoneId);dateFormat.setTimeZone(timeZone);Calendar calendar = Calendar.getInstance();calendar.setTimeZone(timeZone);timeField.setText(dateFormat.format(calendar.getTime()));}else{timeField.setText(null);}}private class TimeSelectedChangedListener implements ItemListener { public void itemStateChanged(ItemEvent e) {if (e.getStateChange()==ItemEvent.SELECTED) {if (e.getItem() instanceof String) {s = e.getItem().toString();}}}}private class TimeThread extends Thread{public void run(){while(true){updateTimeText(s);try{Thread.sleep(100);}catch(InterruptedException e){e.printStackTrace();}}}}class Timer extends Thread //显示系统时间{private JLabel lt;private SimpleDateFormat fy = new SimpleDateFormat(" Gyyyy.MM.dd HH:mm:ss ");public Timer(JLabel lt){this.lt=lt;}public void run(){while(true){try{lt.setText(fy.format(new Date()));this.sleep(500);}catch(InterruptedException ex){ex.printStackTrace();}}}}final private static long[] lunarInfo= new long[] { 0x04bd8, 0x04ae0, 0x0a570, 0x054d5, 0x0d260, 0x0d950, 0x16554,0x056a0, 0x09ad0, 0x055d2, 0x04ae0, 0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, 0x0b540, 0x0d6a0, 0x0ada2, 0x095b0,0x14977, 0x04970, 0x0a4b0, 0x0b4b5, 0x06a50, 0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, 0x04970, 0x06566,0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, 0x02b60, 0x186e3, 0x092e0, 0x1c8d7, 0x0c950, 0x0d4a0, 0x1d8a6, 0x0b550,0x056a0, 0x1a5b4, 0x025d0, 0x092d0, 0x0d2b2, 0x0a950, 0x0b557, 0x06ca0, 0x0b550, 0x15355, 0x04da0, 0x0a5d0,0x14573, 0x052d0, 0x0a9a8, 0x0e950, 0x06aa0, 0x0aea6, 0x0ab50, 0x04b60, 0x0aae4, 0x0a570, 0x05260, 0x0f263,0x0d950, 0x05b57, 0x056a0, 0x096d0, 0x04dd5, 0x04ad0, 0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, 0x0b5a0,0x195a6, 0x095b0, 0x049b0, 0x0a974, 0x0a4b0, 0x0b27a, 0x06a50, 0x06d40, 0x0af46, 0x0ab60, 0x09570, 0x04af5,0x04970, 0x064b0, 0x074a3, 0x0ea50, 0x06b58, 0x055c0, 0x0ab60, 0x096d5, 0x092e0, 0x0c960, 0x0d954, 0x0d4a0,0x0da50, 0x07552, 0x056a0, 0x0abb7, 0x025d0, 0x092d0, 0x0cab5, 0x0a950, 0x0b4a0, 0x0baa4, 0x0ad50, 0x055d9,0x04ba0, 0x0a5b0, 0x15176, 0x052b0, 0x0a930, 0x07954, 0x06aa0, 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, 0x0a4e0,0x0d260, 0x0ea65, 0x0d530, 0x05aa0, 0x076a3, 0x096d0, 0x04bd7, 0x04ad0, 0x0a4d0, 0x1d0b6, 0x0d250, 0x0d520,0x0dd45, 0x0b5a0, 0x056d0, 0x055b2, 0x049b0, 0x0a577, 0x0a4b0, 0x0aa50, 0x1b255, 0x06d20, 0x0ada0 };final private static int[] year20 = new int[] { 1, 4, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1 };final private static int[] year19 = new int[] { 0, 3, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0 };final private static int[] year2000 = new int[] { 0, 3, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1 };public final static String[] nStr1 = new String[] { "", "正", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一","十二" };private final static String[] Gan = new String[] { "甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸" };private final static String[] Zhi = new String[] { "子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥" };private final static String[] Animals = new String[] { "鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊", "猴", "鸡", "狗", "猪" };// 传回农历 y年的总天数final private static int lYearDays(int y) {int i, sum = 348;for (i = 0x8000; i > 0x8; i >>= 1) {if ((lunarInfo[y - 1900] & i) != 0)sum += 1;}return (sum + leapDays(y));}// 传回农历 y年闰月的天数final private static int leapDays(int y) {if (leapMonth(y) != 0) {if ((lunarInfo[y - 1900] & 0x10000) != 0)return 30;elsereturn 29;} elsereturn 0;}// 传回农历 y年闰哪个月 1-12 , 没闰传回 0final private static int leapMonth(int y) {return (int) (lunarInfo[y - 1900] & 0xf);}//传回农历 y年m月的总天数final private static int monthDays(int y, int m) {if ((lunarInfo[y - 1900] & (0x10000 >> m)) == 0)return 29;elsereturn 30;}// 传回农历 y年的生肖final public static String AnimalsYear(int y) {return Animals[(y - 4) % 12];}//传入月日的offset 传回干支,0=甲子final private static String cyclicalm(int num) {return (Gan[num % 10] + Zhi[num % 12]);}// 传入 offset 传回干支, 0=甲子final public static String cyclical(int y) {int num = y - 1900 + 36;return (cyclicalm(num));}// 传出农历.year0 .month1 .day2 .yearCyl3 .monCyl4 .dayCyl5 .isLeap6final private long[] Lunar(int y, int m) {long[] nongDate = new long[7];int i = 0, temp = 0, leap = 0;Date baseDate = new GregorianCalendar(1900 + 1900, 1,31).getTime();Date objDate = new GregorianCalendar(y + 1900, m, 1).getTime();long offset = (objDate.getTime() - baseDate.getTime()) / 86400000L;if (y < 2000)offset += year19[m - 1];if (y > 2000)offset += year20[m - 1];if (y == 2000)offset += year2000[m - 1];nongDate[5] = offset + 40;nongDate[4] = 14;for (i = 1900; i < 2050 && offset > 0; i++) {temp = lYearDays(i);offset -= temp;nongDate[4] += 12;}if (offset < 0) {offset += temp;i--;nongDate[4] -= 12;}nongDate[0] = i;nongDate[3] = i - 1864;leap = leapMonth(i); // 闰哪个月nongDate[6] = 0;for (i = 1; i < 13 && offset > 0; i++) {// 闰月if (leap > 0 && i == (leap + 1) && nongDate[6] == 0) { --i;nongDate[6] = 1;temp = leapDays((int) nongDate[0]);} else {temp = monthDays((int) nongDate[0], i);}// 解除闰月if (nongDate[6] == 1 && i == (leap + 1))nongDate[6] = 0;offset -= temp;if (nongDate[6] == 0)nongDate[4]++;}if (offset == 0 && leap > 0 && i == leap + 1) {if (nongDate[6] == 1) {nongDate[6] = 0;} else {nongDate[6] = 1;--i;--nongDate[4];}}if (offset < 0) {offset += temp;--i;--nongDate[4];}nongDate[1] = i;nongDate[2] = offset + 1;return nongDate;}// 传出y年m月d日对应的农历.year0 .month1 .day2 .yearCyl3 .monCyl4 .dayCyl5 .isLeap6final public static long[] calElement(int y, int m, int d) {long[] nongDate = new long[7];int i = 0, temp = 0, leap = 0;Date baseDate = new GregorianCalendar(0 + 1900, 0, 31).getTime();Date objDate = new GregorianCalendar(y, m - 1, d).getTime();long offset = (objDate.getTime() - baseDate.getTime()) / 86400000L;nongDate[5] = offset + 40;nongDate[4] = 14;for (i = 1900; i < 2050 && offset > 0; i++) {temp = lYearDays(i);offset -= temp;nongDate[4] += 12;}if (offset < 0) {offset += temp;i--;nongDate[4] -= 12;}nongDate[0] = i;nongDate[3] = i - 1864;leap = leapMonth(i); // 闰哪个月nongDate[6] = 0;for (i = 1; i < 13 && offset > 0; i++) {// 闰月if (leap > 0 && i == (leap + 1) && nongDate[6] == 0) { --i;nongDate[6] = 1;temp = leapDays((int) nongDate[0]);} else {temp = monthDays((int) nongDate[0], i);}// 解除闰月if (nongDate[6] == 1 && i == (leap + 1))nongDate[6] = 0;offset -= temp;if (nongDate[6] == 0)nongDate[4]++;}if (offset == 0 && leap > 0 && i == leap + 1) { if (nongDate[6] == 1) {nongDate[6] = 0;} else {nongDate[6] = 1;--i;--nongDate[4];}}if (offset < 0) {offset += temp;--i;--nongDate[4];}nongDate[1] = i;nongDate[2] = offset + 1;return nongDate;}public final static String getChinaDate(int day) { String a = "";if (day == 10)return"初十";if (day == 20)return"二十";if (day == 30)return"三十";int two = (int) ((day) / 10);if (two == 0)a = "初";if (two == 1)a = "十";if (two == 2)a = "廿";if (two == 3)a = "三";int one = (int) (day % 10);switch (one) {case 1:a += "一";break;case 2:a += "二";break;case 3:a += "三";break;case 4:a += "四";break;case 5:a += "五";break;case 6:a += "六";break;case 7:a += "七";break;case 8:a += "八";break;case 9:a += "九";break;}return a;}public static String today() {Calendar today = Calendar.getInstance(Locale.SIMPLIFIED_CHINESE);int year = today.get(Calendar.YEAR);int month = today.get(Calendar.MONTH) + 1;int date = today.get(Calendar.DATE);long[] l = calElement(year, month, date);StringBuffer sToday = new StringBuffer();try {sToday.append(sdf.format(today.getTime()));sToday.append(" \n");sToday.append(" \n");sToday.append(" \n");sToday.append(" 农历");sToday.append(cyclical(year));sToday.append('(');sToday.append(AnimalsYear(year));sToday.append(")年");sToday.append(" \n");sToday.append(" ");sToday.append(nStr1[(int) l[1]]);sToday.append("月");sToday.append(getChinaDate((int) (l[2])));return sToday.toString();} finally {sToday = null;}}private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy 年M月d日 EEEEE");public void mouseEntered(MouseEvent e) {}public void mouseExited(MouseEvent e) {}public void mousePressed(MouseEvent e) {}public void mouseReleased(MouseEvent e) { }}。
JavaSwing日历控件
Java swing日历控件,界面精美,使用方便,能用于个人作品首先,声明一点,这个控件是我从一套据说价值九百多美元的swing类包中提取出来,并加以修改的,所以:
一,你不能把该控件用于任何商业产品中。
二,该控件没有源代码。
(DatePicker.java除外,这个是我加进去的)
三,该控件可以用于你的个人作品中。
截图如下:
使用之前请把datepicker.jar导入classpath中
使用方法如下:
DatePicker datepick = new DatePicker();
或者
datepick = new DatePicker(date,DefaultFormat,font,dimension);//自定义参数值
//各参数含义如下
//参数1 设置该控件的初始值(可选)
//参数2 设置日期的格式(可选)
//参数3 设置该控件的字体(可选)
//参数3 设置该控件的大小(可选)
//该控件继承自JComponent ,它继承了Jcomponent的属性
datepick.setTimePanleVisible(true);//设置时钟面板可见
atepick.setHightlightdays(hilightDays, Color.red);//设置一个月份中需要高亮显示的日子
datepick.setDisableddays(disabledDays);//设置一个月份中不需要的日子,呈灰色显示。
java 工作日休息日表结构
java 工作日休息日表结构Java 工作日休息日表结构Java 是一门广泛应用于计算机领域的高级编程语言。
在日常的开发过程中,我们常常需要对时间进行计算和处理。
而对于工作日和休息日的处理更是不可避免的问题。
为此,我们需要一个好的表结构来处理工作日和休息日,以便更好地管理时间和提高工作效率。
表结构设计如下是我们设计的工作日休息日表结构:day_id | day_date | day_type-------|----------|----------1 | 2022-01-01 | HOLIDAY2 | 2022-01-02 | HOLIDAY3 | 2022-01-03 | HOLIDAY4 | 2022-01-04 | WORKDAY5 | 2022-01-05 | WORKDAY6 | 2022-01-06 | WORKDAY7 | 2022-01-07 | WORKDAY8 | 2022-01-08 | WORKDAY9 | 2022-01-09 | HOLIDAY表中有三个字段,分别是 day_id、day_date 和 day_type。
其中,day_id 是自增长的索引,用于避免日期的主键冲突;day_date 代表日期字段,使用标准的日期格式,如2022-01-01;day_type 字段则代表该日期是工作日还是休息日,取值为 WORKDAY 或 HOLIDAY。
使用数据库我们可以通过数据库来存储和管理工作日休息日的信息。
数据库可以支持我们进行方便的数据查询和实时更新。
我们将表中的数据存储在数据库中,使用 SQL 语句进行数据查询和统计。
表结构使用在实际应用中,我们可以根据需求自定义工作日和休息日。
比如,在一些国家和地区,周六周日是休息日,而在一些行业,周六仍然是工作日。
因此,我们可以针对不同的国家和地区以及行业来设定不同的工作日和休息日。
在代码中,我们可以通过读取数据库中的表结构来得到工作日和休息日的信息,从而方便地进行时间的计算和处理。
JAVA处理日期时间常用方法
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中calendar用法
java中calendar用法
Java中的Calendar是一个日期和时间操作类,它允许用户操作日期和时间,也可以格式化显示日期和时间。
使用Calendar需要先创建一个实例,然后调用它的方法。
以下是一些常用的Calendar方法:
1. getInstance():返回一个Calendar对象的实例。
2. setTime(Date date):将此Calendar的时间设置为给定的Date对象。
3. get(int field):返回给定日历字段的值。
例如,Calendar.YEAR返回当前年份。
4. set(int field, int value):将给定日历字段设置为给定值。
例如,Calendar.MONTH设置月份。
5. add(int field, int amount):将给定的日历字段增加或减少指定的数量。
例如,Calendar.DATE增加或减少天数。
6. getTime():返回一个表示此Calendar时间值的Date对象。
7. getTimeInMillis():返回此Calendar的当前时间值,以毫秒为单位。
使用Calendar进行日期和时间的操作时,需要注意年份、月份、日期、小时、分钟和秒等的各自范围。
例如,月份是从0开始计数的,即0表示1月,11表示12月;小时是24小时制,范围是0-23。
总之,Calendar是Java日期和时间操作中一个非常重要的类,掌握它的用法可以更好地处理日期和时间相关的业务逻辑。
java日历小程序
java日历小程序简介:Java日历小程序是一个基于Java语言开发的工具,用于显示和管理日期和时间。
它提供了一种简单而直观的方式来查看、创建和编辑日历事件,并提供了一些额外的功能,如提醒、重复事件和时间段的计算等。
本文将详细介绍Java日历小程序的功能、使用方法和设计原理。
功能:1. 显示日历:Java日历小程序可以显示当前月份的日历,并以日、周或月的形式展示。
用户可以通过界面上的上下翻页按钮切换月份,方便查看不同日期的日历。
2. 创建和编辑事件:用户可以通过Java日历小程序创建新的日历事件,并为每个事件指定标题、日期、时间和地点等详细信息。
程序还提供了事件编辑功能,允许用户修改已有事件的信息。
3. 提醒功能:Java日历小程序可以设置事件的提醒功能,提醒用户在指定的时间前提醒。
用户可以选择在事件开始前几分钟、几小时或几天提醒,并可以自定义提醒方式,如弹窗、声音或邮件通知等。
4. 重复事件:用户可以为事件设置重复功能,使事件在指定的日期间隔内重复发生。
可以选择每天、每周、每月或每年重复,并可以设置重复的结束日期。
5. 时间段计算:Java日历小程序可以计算两个日期之间的时间段,如计算两个事件之间的天数、小时数或分钟数等。
用户可以选择计算方式,并获取精确的时间段结果。
使用方法:1. 下载和安装:用户可以从官方网站上下载Java日历小程序的安装包,然后按照安装向导进行安装。
安装完成后,用户可以在桌面或开始菜单中找到程序的快捷方式。
2. 打开程序:双击程序的快捷方式,Java日历小程序将启动并显示当前月份的日历。
用户可以通过界面上的按钮和菜单来使用各种功能。
3. 创建事件:用户可以点击界面上的“添加事件”按钮,弹出一个对话框,输入事件的详细信息,如标题、日期、时间和地点等。
点击“确定”按钮后,事件将被创建并显示在日历上。
4. 编辑事件:用户可以在日历上点击已有的事件,弹出一个对话框,允许用户修改事件的信息。
java日历课程设计报告
软件学院课程设计报告书课程名称面向对象课程设计设计题目专业班级学号姓名指导教师年 1 月int selYear1=Integer.parseInt(calLis.Year.getSelectedItem());int selYear = selYear1- 1900;Date d1 = new Date(selYear,selMonth,1);int day = d1.getDay();calLis.setVal(d1,day,selMonth,selYear);}}class myAction implements ActionListener{CalenderCreator calAc;int newyear;public myAction(CalenderCreator ca{calAc=ca;}//为“关闭”按钮添加监听事件,当“关闭”按钮被点击时就执行这里的部分public void actionPerformed(ActionEvent e){String s=calAc.textfield.getText();// newyear=Integer.parseInt(s);System.out.println("Year upto::::::::"+s);calAc.setYear(s);TextField tf = (TextField)e.getSource();tf.removeActionListener(this);}}4.3用图片辅助认识程序的具体操作和执行图4-1:月份和年份的效果图图4-2:星期的效果图图4-3:日期的效果图图4-4:日历整体效果图4.4附注完整程序设计import java.awt.*;import java.awt.event.*;import java.util.*;public class CalenderCreator extends Frame{Button days[]=new Button[49];Choice Month=new Choice();Choice Year=new Choice();Label lmonth=new Label("MONTH");Label lyear=new Label("Year");Label ltext=new Label("YEAR UPTO");Panel p1,p2;GregorianCalendar gc=new GregorianCalendar();int totdays;TextField textfield=new TextField(2);public CalenderCreator(){setTitle("日历");setSize(400,400);。
java年月日的枚举
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万年历源代码(可运行)
private JScrollPane sp = new JScrollPane(table);
private JButton bLastYear = new JButton("上一年");
p3.add(jsp, BorderLayout.CENTER);
p3.add(p2, BorderLayout.SOUTH);
p3.add(ld, BorderLayout.NORTH);
private JTextArea jta = new JTextArea(); //jta--JTextArea
private JScrollPane jsp = new JScrollPane(jta);
private JLabel l = new JLabel("年份文本框中可直接键入要查找的年份,以提高查询效率");
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
//import java.sql.Date;
cld.set(Integer.parseInt(strDate[0]), Integer.parseInt(strDate[1])-1, 0);
showCalendar(Integer.parseInt(strDate[0]), Integer.parseInt(strDate[1]), cld);
java calendar set方法
java calendar set方法Java Calendar类中的set方法是用来设置日期和时间的。
在使用set方法之前,我们首先需要创建一个Calendar对象,并通过该对象调用set方法来设置日期和时间。
set方法有多个重载的版本,用于设置不同的日期和时间字段。
以下是set方法的几种常见用法:1. 设置年份:使用set方法设置年份,可以使用Calendar类中定义的常量来表示具体的年份。
例如,要将年份设置为2021年,可以使用以下代码:```javaCalendar calendar = Calendar.getInstance();calendar.set(Calendar.YEAR, 2021);```2. 设置月份:使用set方法设置月份时,月份的范围是从0到11,其中0表示一月,11表示十二月。
例如,要将月份设置为五月,可以使用以下代码:```javacalendar.set(Calendar.MONTH, Calendar.MAY);```3. 设置日期:使用set方法设置日期时,日期的范围是从1到31。
例如,要将日期设置为15号,可以使用以下代码:```javacalendar.set(Calendar.DAY_OF_MONTH, 15);```4. 设置小时:使用set方法设置小时时,小时的范围是从0到23。
例如,要将小时设置为下午3点,可以使用以下代码:```javacalendar.set(Calendar.HOUR_OF_DAY, 15);```5. 设置分钟:使用set方法设置分钟时,分钟的范围是从0到59。
例如,要将分钟设置为30分,可以使用以下代码:```javacalendar.set(Calendar.MINUTE, 30);```6. 设置秒钟:使用set方法设置秒钟时,秒钟的范围是从0到59。
例如,要将秒钟设置为45秒,可以使用以下代码:```javacalendar.set(Calendar.SECOND, 45);```7. 设置毫秒:使用set方法设置毫秒时,毫秒的范围是从0到999。
java万年历程序代码
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 calendar add 方法
在Java中,日期和时间是非常常见的操作。
为了更方便地对日期和时间进行处理,Java提供了Calendar类来执行这些操作。
其中,Calendar类中有一个add()方法,可以实现对日期和时间的加减操作。
本文将详细介绍Java Calendar类中的add()方法的用法和示例。
一、add()方法的语法Calendar类中的add()方法用于对特定的日期或时间字段进行加减操作。
add()方法的语法如下:```public void add(int field, int amount)```其中,field表示要进行操作的日期或时间字段,amount表示要添加或减少的数量。
二、add()方法的示例下面通过几个示例来演示add()方法的用法:1. 添加或减少年份:```Calendar calendar = Calendar.getInstance();calendar.add(Calendar.YEAR, 5); // 在当前日期上添加5年System.out.println("添加5年后的日期:" + calendar.getTime()); calendar.add(Calendar.YEAR, -2); // 在当前日期上减少2年System.out.println("减少2年后的日期:" + calendar.getTime()); ```2. 添加或减少月份:```Calendar calendar = Calendar.getInstance();calendar.add(Calendar.MONTH, 3); // 在当前日期上添加3个月System.out.println("添加3个月后的日期:" + calendar.getTime()); calendar.add(Calendar.MONTH, -1); // 在当前日期上减少1个月System.out.println("减少1个月后的日期:" + calendar.getTime()); ```3. 添加或减少天数:```Calendar calendar = Calendar.getInstance();calendar.add(Calendar.DAY_OF_MONTH, 10); // 在当前日期上添加10天System.out.println("添加10天后的日期:" + calendar.getTime()); calendar.add(Calendar.DAY_OF_MONTH, -5); // 在当前日期上减少5天System.out.println("减少5天后的日期:" + calendar.getTime()); ```4. 添加或减少小时数:```Calendar calendar = Calendar.getInstance();calendar.add(Calendar.HOUR_OF_DAY, 2); // 在当前时间上添加2小时System.out.println("添加2小时后的时间:" + calendar.getTime()); calendar.add(Calendar.HOUR_OF_DAY, -1); // 在当前时间上减少1小时System.out.println("减少1小时后的时间:" + calendar.getTime()); ```5. 添加或减少分钟数:```Calendar calendar = Calendar.getInstance();calendar.add(Calendar.MINUTE, 15); // 在当前时间上添加15分钟System.out.println("添加15分钟后的时间:" +calendar.getTime());calendar.add(Calendar.MINUTE, -10); // 在当前时间上减少10分钟System.out.println("减少10分钟后的时间:" +calendar.getTime());```三、总结通过上面的示例,我们可以看到Calendar类的add()方法可以非常方便地对日期和时间进行加减操作,非常灵活。
jsp制作日历
jsp制作日历<%@ page contentType="text/html;charset=GBK" %><%@page language="java" import="java.util.*"%><%try{String year=request.getParameter("year");String month=request.getParameter("month");%><html><head><meta http-equiv="Content-Type" content="text/html;charset=gb2312"><title>JSP日历</title><script language="javascript"><!--function changeMonth(){document.sm.submit();}//--></script></head><%String[] days=new String[42];for(int counti=0;counti<42;counti++)days[counti]="";%><%Calendar thisMonth=Calendar.getInstance();Date dt=new Date();if(!month.equals(""))thisMonth.set(Calendar.MONTH,Integer.parseInt(month));if(!year.equals(""))thisMonth.set(Calendar.YEAR,Integer.parseInt(year));int maxIndex=0;year=String.valueOf(thisMonth.get(Calendar.YEAR));month=String.valueOf(thisMonth.get(Calendar.MONTH));if(month.equals("0")||month.equals("2")||month.equals("4")||month.equals("6")||month.equals("7")| |month.equals("9")||month.equals("11"));maxIndex=31;if(month.equals("3")||month.equals("5")||month.equals("8")||month.equals("10"))maxIndex=30;if(month.equals("1"))maxIndex=28;thisMonth.setFirstDayOfWeek(Calendar.SUNDAY);thisMonth.set(Calendar.DAY_OF_MONTH,1);int firstIndex=thisMonth.get(Calendar.DAY_OF_WEEK)-1;for(int counti=0;counti<maxIndex;counti++)days[firstIndex+counti]=String.valueOf(counti+1);%><body><cente><form name="am" method="post" action="Calendar.jsp"> <%=year%>年 <%=Integer.parseInt(month)+1%>月<table border="0" width="168" height="81"><div align=center><tr><th width="25" height="16" bgcolor="#FFFF00"><font color="red">日</font></th><th width="25" height="16" bgcolor="#FFFF00">一</th><th width="25" height="16" bgcolor="#FFFF00">二</th><th width="25" height="16" bgcolor="#FFFF00">三</th><th width="25" height="16" bgcolor="#FFFF00">四</th><th width="25" height="16" bgcolor="#FFFF00">五</th><th width="25" height="16" bgcolor="#FFFF00"><font color="green">六</font></th> </tr><% for(int countj=0;countj<6;countj++){%><tr><% for(int counti=countj*7;counti<(countj+1)*7;counti++){%><td width="15%" height="16" bgcolor="#C0C0C0" valign="middle" align="center"> <%=days[counti]%></td><%}%></tr><%}%></div></table><table border="0" width="168" height="20"><tr><td width=30%><select name="month" size="1" onchange="changeMonth()"><option value="0">一月</option><option value="1">二月</option><option value="2">三月</option><option value="3">四月</option><option value="4">五月</option><option value="5">六月</option><option value="6">七月</option><option value="7">八月</option><option value="8">九月</option><option value="9">十月</option><option value="10">十一月</option><option value="11">十二月</option></select></td><td width=28%><input type=text name="year" value=<%=year%> size=4 maxlength=4></td> <td>年</td><td width=28%><input type=submit value="刷新"></td></tr></table></form></center><script Language="JavaScript"><!--document.sm.month.options.selectedIndex=<%=month%>;//--></script></body></html><%}catch(Exception e){%>输入的为非法数字<% }%>优惠促销打折网5号仓库。
java中关于日期类Calendar的简单使用
java中关于⽇期类Calendar的简单使⽤根据年⽉获取⽉份第⼀天public static String getSDateOfMonth(String monthId) {String SDate;Calendar cal = Calendar.getInstance();int year = cal.get(Calendar.YEAR);int month = cal.get(Calendar.MONTH) + 1;int y = Integer.parseInt(monthId.substring(0, 4));int m = Integer.parseInt(monthId.substring(4, 6));if (y == year && m == month) {if (month < 10) {// ⽉份少于10SDate = "" + year + "-0" + month + "-01";} else {SDate = "" + year + month + "-01";}} else {// 不是当前⽉if (m < 10) {// ⽉份少于10SDate = "" + y + "-0" + m + "-01";} else {SDate = "" + y + m + "-01";}}return SDate;};根据年⽉获取⽉份最后⼀天public static String getLastDayOfMonth(String monthId) {int year = Integer.parseInt(monthId.substring(0, 4));int month = Integer.parseInt(monthId.substring(4, 6));Calendar cal = Calendar.getInstance();// 设置年份cal.set(Calendar.YEAR, year);// 设置⽉份cal.set(Calendar.MONTH, month - 1);// 获取某⽉最⼤天数int lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);// 设置⽇历中⽉份的最⼤天数cal.set(Calendar.DAY_OF_MONTH, lastDay);// 格式化⽇期SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");String lastDayOfMonth = sdf.format(cal.getTime());return lastDayOfMonth;};判断是否是当前年⽉public static boolean isCurrentMonth(String month) {Calendar cal = Calendar.getInstance();int currentYear = cal.get(Calendar.YEAR);int currentMonth = cal.get(Calendar.MONTH) + 1;int y = Integer.parseInt(month.substring(0, 4));int m = Integer.parseInt(month.substring(4, 6));if (y == currentYear && m == currentMonth) {return true;}else{return false;}};SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");//获取前⽉的第⼀天Calendar cal_1=Calendar.getInstance();//获取当前⽇期cal_1.add(Calendar.MONTH, -1);cal_1.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前⽇期既为本⽉第⼀天firstDay = format.format(cal_1.getTime());System.out.println("-----1------firstDay:"+firstDay);//获取前⽉的最后⼀天Calendar cale = Calendar.getInstance();cale.set(Calendar.DAY_OF_MONTH,0);//设置为1号,当前⽇期既为本⽉第⼀天lastDay = format.format(cale.getTime());System.out.println("-----2------lastDay:"+lastDay);//获取当前⽉第⼀天:Calendar c = Calendar.getInstance();c.add(Calendar.MONTH, 0);c.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前⽇期既为本⽉第⼀天String first = format.format(c.getTime());System.out.println("===============first:"+first);//获取当前⽉最后⼀天Calendar ca = Calendar.getInstance();ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH)); String last = format.format(ca.getTime());System.out.println("===============last:"+last);。
JSP 实现日历
JSP 实现日历
通过上面JavaBean相关知识的介绍,我们对JavaBean的相关概念已有了初步了解,为了加深知识的巩固,在这里用实现一个日历作指导,介绍一下JavaBean相关知识的应用。
(1)日历Bean实现。
日历Bean类CalcendarBean.java主要实现了年、月、日
在此文件中,使用getIntance方法创建了抽象类Calendar的对象calendar,setTime方法设置calendar对象的时间为当前时间。
使用get方法获得calendar对象的不同字段的值。
(2)日历显示。
日历显示功能是利用JSP的动作元素<jsp:getProperty/>和标记元素<jsp:useBean/>来完成的,实现该显示的功能的文件calendar.jsp的代码如下所
(3)实现日历显示。
将以上文件保存,打开IE浏览器,在地址栏输入http://l ocalhost:8080/stu/calendar.jsp,单击【转到】按钮,就会显示当前日历的相关信息,如图4-14所示。
图4-14 日历显示。
JAVA万年历系统课程设计报告附源码
2013-2014学年第二学期《面向对象程序设计》课程设计报告题目:万年历系统专业:计算机科学与技术班级:姓名:学号:指导教师:成绩:计算机与信息工程系2014年6月6日目录1设计内容及要求设计内容万年历,实际上就是记录一定时间范围内(比如100年或更多)的具体阳历或阴历的日期的年历,方便有需要的人查询使用。
在我设计的万年历中主要有:(1)使用图形用户界面来查询用用户所需的日期信息,符合日常软件使用规范。
(2)按月份查询,实现了显示查询1901~2100年某月所有日期的阴阳历对照。
(3)并且添加了重大节日与星座等信息,界面采用日常的星期与月份结合的格式,方便查看与使用。
(4)编写万年历的课程设计,是为了使同学们更加了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。
为后续各门计算机课程的学习和毕业设计打下坚实基础。
设计任务及具体要求利用JAVA语言编写的万年历系统采用了多种JAVA语句来实现多种功能。
用户可以通过本程序的applet运行界面来查找一整年某月的农历和阳历,可以查找用户所想了解的某一天具体为星期几,并且可以看到一些重大节日的具体时间。
要求:满足设计万年历系统的目的,即当用户查询年份与月份时,系统就要将这一年的某一月份的阴历与阳历全部显示出来,并且附带这一月份的重大节日。
当用户随意改动年份或月份时系统自动显示与星期对应的日期。
用户点击日期时系统会显示具体星座信息。
2概要设计程序设计思路(1)总天数的算法:首先用if语句判断定义年到输入年之间每一年是否为闰年,是闰年,该年的总天数为366,否则,为365。
然后判断输入的年是否为定义年,若是,令总天数S=1,否则,用累加法计算出定义年到输入年之间的总天数,再把输入年的一月到要输出的月份之间的天数累加起来,若该月是闰年中的月份并且该月还大于二月,再使总天数加1,否则,不加,既算出从定义年一月一日到输出年的该月一日的总天数。
java中自动生成法定节假日的cron表达式
一、概述在日常的软件开发中,经常会遇到需要自动生成法定节假日的cron表达式的情况。
而在Java中,我们可以通过一些开源的库来实现这一功能。
本文将介绍如何在Java中使用开源库来自动生成法定节假日的cron表达式,以方便开发人员在编写定时任务时能够考虑到法定节假日的影响。
二、什么是cron表达式在介绍如何自动生成法定节假日的cron表达式之前,我们首先需要了解什么是cron表达式。
Cron表达式是一个字符串,它可以被用来表示一段时间间隔(如:每天、每个月的某一天、每小时等)。
它可以被用于定时任务调度,常见于Linux系统的定时任务配置中。
Cron表达式由6或7个空格分隔的时间字段组成,依次是:秒、分、时、日、月、周几和年(可选)。
其中,用符号“*”来表示匹配任意值。
三、Java中的cron表达式生成工具在Java中有一些开源的库可以帮助我们生成cron表达式,比如Quartz、Spring Framework等。
其中,Quartz是一个非常优秀的定时任务调度框架,它提供了丰富的API,可以方便地生成各种类型的cron表达式。
Spring Framework也提供了对Quartz的集成,可以更加方便地在Spring应用中使用Quartz来实现定时任务的调度。
四、法定节假日对定时任务的影响在实际的软件开发中,我们经常会遇到需要在法定节假日暂停或者调整定时任务的情况。
在某些特殊的节假日,我们希望定时任务可以暂停执行,以免对系统产生影响。
而在一些节日的前后,我们可能需要调整定时任务的执行时间,以适应节日期间的业务需求。
五、自动生成法定节假日的cron表达式为了应对法定节假日对定时任务的影响,我们可以利用开源库来自动生成法定节假日的cron表达式。
在Java中,可以使用一些开源的库来实现这一功能。
可以使用Quartz的API来动态生成法定节假日的cron表达式。
也可以结合一些公共的节假日数据源来自动生成法定节假日的cron表达式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
java 制作日历
本实例通过制作日历,来介绍Calendar类。
该类是一个抽象类,为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH、HOUR等日历字段之间的转换提供了一些方法。
操作步骤:
(1)导入util类包,该包提供了一些实用的方法和数据结构,如日期(Data)类、日历(Calendar)类来产生和获取日期及时间等。
然后,创建CalendarTest类和主方法。
世界上大多数国家/地区使用的标准日历系统。
而get(Calendar.DAY_OF_MONTH) 获取当月中天数的最小值。
get(Calendar.DA Y_OF_WEEK) 用于获取当前日期在星期中的第几天从1-7(对应从星期日~星期
(3)通过do while循环语句,打开当月的日历,并对当天做一个星号“*”标记。
然后,通过“if (weekday == Calendar.SATURDAY)”语句判断是否为星期六,
(4)执行代码,获取当前的月份、日期和星期等内容,然后通过循环语句打印出当前月份的日历,如图6-2所示。
图6-2 打印月份。