java输入年月输出日历
java日期处理输入输出(度微尔开发者联盟编辑整理)
// 年的加减
public static final int SUB_YEAR = Calendar.YEAR;
// 月加减
public static final int SUB_MONTH = Calendar.MONTH;
// 天的加减
public static int getToday() {
Calendar calendar = Calendar.getInstance();
return calendar.get(Calendar.DATE);
}
return d;
}
/**
* 把日期转换为字符串
*/
public static String dateToString(java.util.Date date, String format) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(dateKind, amount);
return dateToString(calendar.getTime(), FORMAT_ONE);
calendar.set(year, month - 1, 1);
return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
}
/**
* 获得当前日期
*/
import java.util.GregorianCalendar;
import java.util.regex.Pattern;
import mons.logging.Log;
java获取当前年份、月份和日期字符串
java获取当前年份、⽉份和⽇期字符串Java获取当前年份、⽉份和⽇期⾸先创建⼀个Calendar类的实例对象,Calendar类属于java.util包Calendar calendar = Calendar.getInstance();获取当前年份、⽉份和⽇期// 获取当前年int year = calendar.get(Calendar.YEAR);// 获取当前⽉int month = calendar.get(Calendar.MONTH) + 1;// 获取当前⽇int day = calenedar.get(Calendar.DATE);// 获取当前⼩时int hour = calendar.get(Calendar.HOUR_OF_DAY);// 获取当前分钟int minute = calendar.get(Calendar.MINUTE);// 获取当前秒int second = calendar.get(Calendar.SECOND);// 获取当前是本周第⼏天int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);// 获取当前是本⽉第⼏天int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);// 获取当前是本年第⼏天int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR);获取当⽉的第⼀天和最后⼀天SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");// 获取当⽉第⼀天calendar = Calendar.getInstance();calendar.add(Calendar.MONTH, 0);calendar.set(Calendar.DAY_OF_MONTH, 1);String firstday = format.format(calendar.getTime());// 获取当⽉最后⼀天calendar = Calendar.getInstance();calendar.add(Calendar.MONTH, 1);calendar.set(Calendar.DAY_OF_MONTH, 0);String lastday = format.format(calendar.getTime());当前⽇期SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");Date date = new Date();String today = format.format(date);。
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) { }}。
Java取日期的所有时间点可根据年月日
package com.util;import java.text.DateFormat;import java.text.ParseException;import java.text.ParsePosition;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;public class TimeUtil {//用来全局控制上一周,本周,下一周的周数变化private int weeks = 0;private int MaxDate;//一月最大天数private int MaxYear;//一年最大天数/*** @param args*/public static void main(String[] args) {TimeUtil tt = new TimeUtil();// System.out.println("获取当天日期:"+tt.getNowTime("yyyy-MM-dd"));// System.out.println("获取本周一日期:"+tt.getMondayOFWeek());// System.out.println("获取本周日的日期~:"+tt.getCurrentWeekday());// System.out.println("获取上周一日期:"+tt.getPreviousWeekday());// System.out.println("获取上周日日期:"+tt.getPreviousWeekSunday());// System.out.println("获取下周一日期:"+tt.getNextMonday());// System.out.println("获取下周日日期:"+tt.getNextSunday());// System.out.println("获得相应周的周六的日期:"+tt.getNowTime("yyyy-MM-dd"));// System.out.println("获取本月第一天日期:"+tt.getFirstDayOfMonth());// System.out.println("获取本月最后一天日期:"+tt.getDefaultDay());// System.out.println("获取上月第一天日期:"+tt.getPreviousMonthFirst()); // System.out.println("获取上月最后一天的日期:"+tt.getPreviousMonthEnd());// System.out.println("获取下月第一天日期:"+tt.getNextMonthFirst());// System.out.println("获取下月最后一天日期:"+tt.getNextMonthEnd());// System.out.println("获取本年的第一天日期:"+tt.getCurrentYearFirst()); DateFormat fmt =new SimpleDateFormat("yyyy-MM-dd");Date date = null;try {date = fmt.parse("2008-02-21");} catch (ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println("获取某年最后一天日期:"+tt.getCurrentYearEnd(date)); System.out.println("获取某年的去年的第一天日期:"+tt.getPreviousYearFirst(date));System.out.println("获取某年去年的最后一天日期:"+tt.getPreviousYearEnd(date));System.out.println("获取某年的第一天日期:"+tt.getCurrentYearfirst(date));// System.out.println("获取明年第一天日期:"+tt.getNextYearFirst());// System.out.println("获取明年最后一天日期:"+tt.getNextYearEnd());// System.out.println("获取本季度第一天到最后一天:"+tt.getThisSeasonTime(11));// System.out.println("获取两个日期之间间隔天数2008-12-1~2008-9.29:"+TimeUtil.getTwoDay("2008-12-1","2008-9-29"));System.out.println("ceshi "+tt.getLastDayOfMonths(date));System.out.println("cessss "+ tt.getFirstDayOfMonth(date));System.out.println("ceshi last year day "+tt.getLastYearFirstDayOfMonth(date));System.out.println("ceshi last year day "+tt.getLastYearLastDayOfMonths(date));System.out.println(tt.updateLastDate(date));}/*** 得到二个日期间的间隔天数*/public static String getTwoDay(String sj1, String sj2) {SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");long day = 0;try {java.util.Date date = myFormatter.parse(sj1);java.util.Date mydate = myFormatter.parse(sj2);day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);} catch (Exception e) {return "";}return day + "";}/*** 根据一个日期,返回是星期几的字符串** @param sdate* @return*/public static String getWeek(String sdate) {// 再转换为时间Date date = TimeUtil.strToDate(sdate);Calendar c = Calendar.getInstance();c.setTime(date);// int hour=c.get(Calendar.DAY_OF_WEEK);// hour中存的就是星期几了,其范围 1~7// 1=星期日 7=星期六,其他类推return new SimpleDateFormat("EEEE").format(c.getTime());}/*** 将短时间格式字符串转换为时间 yyyy-MM-dd** @param strDate* @return*/public static Date strToDate(String strDate) {SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); ParsePosition pos = new ParsePosition(0);Date strtodate = formatter.parse(strDate, pos);return strtodate;}/*** 两个时间之间的天数** @param date1* @param date2* @return*/public static long getDays(String date1, String date2) {if (date1 == null || date1.equals(""))return 0;if (date2 == null || date2.equals(""))return 0;// 转换为标准时间SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd"); java.util.Date date = null;java.util.Date mydate = null;try {date = myFormatter.parse(date1);mydate = myFormatter.parse(date2);} catch (Exception e) {}long day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000); return day;}// 计算当月最后一天,返回字符串public String getDefaultDay(){String str = "";SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");Calendar lastDate = Calendar.getInstance();lastDate.set(Calendar.DATE,1);//设为当前月的1号lastDate.add(Calendar.MONTH,1);//加一个月,变为下月的1号lastDate.add(Calendar.DATE,-1);//减去一天,变为当月最后一天str=sdf.format(lastDate.getTime());return str;}// 上月第一天public String getPreviousMonthFirst(){String str = "";SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");Calendar lastDate = Calendar.getInstance();lastDate.set(Calendar.DATE,1);//设为当前月的1号lastDate.add(Calendar.MONTH,-1);//减一个月,变为下月的1号//lastDate.add(Calendar.DATE,-1);//减去一天,变为当月最后一天str=sdf.format(lastDate.getTime());return str;}//获取当月第一天public String getFirstDayOfMonth(){String str = "";SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");Calendar lastDate = Calendar.getInstance();lastDate.set(Calendar.DATE,1);//设为当前月的1号str=sdf.format(lastDate.getTime());return str;}// 获得本周星期日的日期public String getCurrentWeekday() {weeks = 0;int mondayPlus = this.getMondayPlus();GregorianCalendar currentDate = new GregorianCalendar();currentDate.add(GregorianCalendar.DATE, mondayPlus+6);Date monday = currentDate.getTime();DateFormat df = DateFormat.getDateInstance();String preMonday = df.format(monday);return preMonday;}//获取当天时间public String getNowTime(String dateformat){Date now = new Date();SimpleDateFormat dateFormat = new SimpleDateFormat(dateformat);//可以方便地修改日期格式String hehe = dateFormat.format(now);return hehe;}// 获得当前日期与本周日相差的天数private int getMondayPlus() {Calendar cd = Calendar.getInstance();// 获得今天是一周的第几天,星期日是第一天,星期二是第二天......int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK)-1; //因为按中国礼拜一作为第一天所以这里减1if (dayOfWeek == 1) {return 0;} else {return 1 - dayOfWeek;}}//获得本周一的日期public String getMondayOFWeek(){weeks = 0;int mondayPlus = this.getMondayPlus();GregorianCalendar currentDate = new GregorianCalendar();currentDate.add(GregorianCalendar.DATE, mondayPlus);Date monday = currentDate.getTime();DateFormat df = DateFormat.getDateInstance();String preMonday = df.format(monday);return preMonday;}//获得相应周的周六的日期public String getSaturday() {int mondayPlus = this.getMondayPlus();GregorianCalendar currentDate = new GregorianCalendar();currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks + 6); Date monday = currentDate.getTime();DateFormat df = DateFormat.getDateInstance();String preMonday = df.format(monday);return preMonday;}// 获得上周星期日的日期public String getPreviousWeekSunday() {weeks=0;weeks--;int mondayPlus = this.getMondayPlus();GregorianCalendar currentDate = new GregorianCalendar();currentDate.add(GregorianCalendar.DATE, mondayPlus+weeks);Date monday = currentDate.getTime();DateFormat df = DateFormat.getDateInstance();String preMonday = df.format(monday);return preMonday;}// 获得上周星期一的日期public String getPreviousWeekday() {weeks--;int mondayPlus = this.getMondayPlus();GregorianCalendar currentDate = new GregorianCalendar();currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks);Date monday = currentDate.getTime();DateFormat df = DateFormat.getDateInstance();String preMonday = df.format(monday);return preMonday;}// 获得下周星期一的日期public String getNextMonday() {weeks++;int mondayPlus = this.getMondayPlus();GregorianCalendar currentDate = new GregorianCalendar(); currentDate.add(GregorianCalendar.DATE, mondayPlus + 7); Date monday = currentDate.getTime();DateFormat df = DateFormat.getDateInstance();String preMonday = df.format(monday);return preMonday;}// 获得下周星期日的日期public String getNextSunday() {int mondayPlus = this.getMondayPlus();GregorianCalendar currentDate = new GregorianCalendar(); currentDate.add(GregorianCalendar.DATE, mondayPlus + 7+6); Date monday = currentDate.getTime();DateFormat df = DateFormat.getDateInstance();String preMonday = df.format(monday);return preMonday;}private int getMonthPlus(){Calendar cd = Calendar.getInstance();int monthOfNumber = cd.get(Calendar.DAY_OF_MONTH);cd.set(Calendar.DATE, 1);//把日期设置为当月第一天cd.roll(Calendar.DATE, -1);//日期回滚一天,也就是最后一天MaxDate=cd.get(Calendar.DATE);if(monthOfNumber == 1){return -MaxDate;}else{return 1-monthOfNumber;}}//获得上月最后一天的日期public String getPreviousMonthEnd(){String str = "";SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");Calendar lastDate = Calendar.getInstance();lastDate.add(Calendar.MONTH,-1);//减一个月lastDate.set(Calendar.DATE, 1);//把日期设置为当月第一天lastDate.roll(Calendar.DATE, -1);//日期回滚一天,也就是本月最后一天 str=sdf.format(lastDate.getTime());return str;}//获得下个月第一天的日期public String getNextMonthFirst(){String str = "";SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");Calendar lastDate = Calendar.getInstance();lastDate.add(Calendar.MONTH,1);//减一个月lastDate.set(Calendar.DATE, 1);//把日期设置为当月第一天str=sdf.format(lastDate.getTime());return str;}//获得下个月最后一天的日期public String getNextMonthEnd(){String str = "";SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");Calendar lastDate = Calendar.getInstance();lastDate.add(Calendar.MONTH,1);//加一个月lastDate.set(Calendar.DATE, 1);//把日期设置为当月第一天lastDate.roll(Calendar.DATE, -1);//日期回滚一天,也就是本月最后一天 str=sdf.format(lastDate.getTime());return str;}//获得明年最后一天的日期public String getNextYearEnd(){String str = "";SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); Calendar lastDate = Calendar.getInstance();lastDate.add(Calendar.YEAR,1);//加一个年lastDate.set(Calendar.DAY_OF_YEAR, 1);lastDate.roll(Calendar.DAY_OF_YEAR, -1);str=sdf.format(lastDate.getTime());return str;}//获得明年第一天的日期public String getNextYearFirst(){String str = "";SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");Calendar lastDate = Calendar.getInstance();lastDate.add(Calendar.YEAR,1);//加一个年lastDate.set(Calendar.DAY_OF_YEAR, 1);str=sdf.format(lastDate.getTime());return str;}//获得本年有多少天private int getMaxYear(){Calendar cd = Calendar.getInstance();cd.set(Calendar.DAY_OF_YEAR,1);//把日期设为当年第一天cd.roll(Calendar.DAY_OF_YEAR,-1);//把日期回滚一天。
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 程序 输入年月 输出该月日历
public class Date {public Date(int year, int month){int cols = 1;int days = 1;for(int i=1; i<year; i++){if(((i%100!=0) && (i%4==0)) || (i%400==0))days += 366;elsedays += 365;}for(int j=1; j<month; j++){switch(j){case 1: case 3: case 5: case 7:case 8: case 10: case 12:days += 31;break;case 2:if(((year%100!=0) && (year%4==0)) || (year%400==0))days += 29;elsedays += 28;break;default:days += 30;break;}}cols = days % 7;printDate(year, month, cols);}public void printDate(int year, int month, int cols){int days = 0;int i = year;int j = month;System.out.println(i+"年");System.out.println("\t"+i+"年 "+j+"月" +"cols="+cols);switch(j){case 1: case 3: case 5: case 7:case 8: case 10: case 12:days = 31;break;case 2:if(((i%100!=0) && (i%4==0)) || (i%400==0))days = 29;elsedays = 28;break;default:days = 30;break;}System.out.println("\t日" + "\t一" + "\t二" + "\t三" + "\t四" + "\t五" + "\t六");for(int m=1; m<=cols; m++)System.out.print("\t");for(int k=1; k<=days; k++){System.out.print("\t"+k);cols ++;if(cols>=7){System.out.println("");cols = 0;}}System.out.println("");}public static void main(String [] args){Date d1 = new Date(2012, 5); //输出2010年5月日历}}。
java日历小程序
java日历小程序简介:Java日历小程序是一个基于Java语言开发的工具,用于显示和管理日期和时间。
它提供了一种简单而直观的方式来查看、创建和编辑日历事件,并提供了一些额外的功能,如提醒、重复事件和时间段的计算等。
本文将详细介绍Java日历小程序的功能、使用方法和设计原理。
功能:1. 显示日历:Java日历小程序可以显示当前月份的日历,并以日、周或月的形式展示。
用户可以通过界面上的上下翻页按钮切换月份,方便查看不同日期的日历。
2. 创建和编辑事件:用户可以通过Java日历小程序创建新的日历事件,并为每个事件指定标题、日期、时间和地点等详细信息。
程序还提供了事件编辑功能,允许用户修改已有事件的信息。
3. 提醒功能:Java日历小程序可以设置事件的提醒功能,提醒用户在指定的时间前提醒。
用户可以选择在事件开始前几分钟、几小时或几天提醒,并可以自定义提醒方式,如弹窗、声音或邮件通知等。
4. 重复事件:用户可以为事件设置重复功能,使事件在指定的日期间隔内重复发生。
可以选择每天、每周、每月或每年重复,并可以设置重复的结束日期。
5. 时间段计算:Java日历小程序可以计算两个日期之间的时间段,如计算两个事件之间的天数、小时数或分钟数等。
用户可以选择计算方式,并获取精确的时间段结果。
使用方法:1. 下载和安装:用户可以从官方网站上下载Java日历小程序的安装包,然后按照安装向导进行安装。
安装完成后,用户可以在桌面或开始菜单中找到程序的快捷方式。
2. 打开程序:双击程序的快捷方式,Java日历小程序将启动并显示当前月份的日历。
用户可以通过界面上的按钮和菜单来使用各种功能。
3. 创建事件:用户可以点击界面上的“添加事件”按钮,弹出一个对话框,输入事件的详细信息,如标题、日期、时间和地点等。
点击“确定”按钮后,事件将被创建并显示在日历上。
4. 编辑事件:用户可以在日历上点击已有的事件,弹出一个对话框,允许用户修改事件的信息。
Java获取当前年月日、时间
Java获取当前年⽉⽇、时间两种⽅法,通过Date类或者通过Calendar类。
Date类⽐较简单,但是要得到细致的字段的话Calendar类⽐较⽅便。
import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.Locale;import org.junit.Test;public class GetTimeNow {/*** 通过Calendar类获取*/@Testpublic void getTimeNowThroughCalendar(){//使⽤默认时区和语⾔环境获得⼀个⽇历。
Calendar rightNow = Calendar.getInstance();/*⽤Calendar的get(int field)⽅法返回给定⽇历字段的值。
HOUR ⽤于 12 ⼩时制时钟 (0 - 11),HOUR_OF_DAY ⽤于 24 ⼩时制时钟。
*/Integer year = rightNow.get(Calendar.YEAR);Integer month = rightNow.get(Calendar.MONTH)+1; //第⼀个⽉从0开始,所以得到⽉份+1Integer day = rightNow.get(rightNow.DAY_OF_MONTH);Integer hour12 = rightNow.get(rightNow.HOUR);Integer hour24 = rightNow.get(rightNow.HOUR_OF_DAY);Integer minute = rightNow.get(rightNow.MINUTE);Integer second = rightNow.get(rightNow.SECOND);Integer millisecond = rightNow.get(LISECOND);String TimeNow12 = year+"-"+month+"-"+day+" "+hour12+":"+minute+":"+second+":"+millisecond;String TimeNow24 = year+"-"+month+"-"+day+" "+hour24+":"+minute+":"+second+":"+millisecond;System.out.println("⽇历:"+rightNow+"\n12⼩时制时钟:"+TimeNow12+"\n24⼩时制时钟:"+TimeNow24);}/*** 通过Date类获取*/@Testpublic void getTimeNowThroughDate(){Date date=new Date();DateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS");System.out.println(format.format(date));//DateFormat类的静态⼯⼚⽅法System.out.println(format.getInstance().format(date));System.out.println(format.getDateInstance().format(date));System.out.println(format.getTimeInstance().format(date));System.out.println(format.getDateTimeInstance().format(date));//DateFormat带参数的静态⼯⼚⽅法//第⼀个参数是静态变量style有4中取值0、1、2、3分别对应SHORT、MIDIUM、LONG、FULL//第⼆个参数根据环境敏感的Locale类的静态变量⾃定义输出System.out.println(format.getDateInstance(0, Locale.CHINA).format(date));System.out.println(format.getTimeInstance(0,Locale.CHINA).format(date));System.out.println(format.getDateTimeInstance(2,2).format(date));}/*** 两者结合。
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第一次作业题目2021版
java第一次作业题目2021版1. 题目:从键盘上输入两个正整数m和n,求其最大公约数和最小公倍数,必须判断输入数的正确性(比如非正整数等必须提示)。
[选题人数:3] 2. 题目:给出一个月的总天数编写程序,提示用户输入月份和年份,然后显示这个月的天数。
例如,如果用户输入的月份是2而年份是2000,那么程序应显示“2000年2月有29天”。
如果用户输入的月份为3而年份为2021,那么程序就应该显示“2021年3月有31天”。
(提示:必须判断是否是闰年) [选题人数:3]3. 题目:计算一个三角形的周长编写程序,提示用户从键盘输入三角形的三条边,如果输入值合法就计算这个三角形的周长,否则,显示这些输入值不合法(如果任意两条边的和大于第三条边,那么输入值都是合法的)。
[选题人数:3] 4. 题目:奖金发放问题企业发放的奖金根据利润提成。
利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?[选题人数:3]5. 题目:打印金字塔形的数字编写一个嵌套的for循环,打印下面的输出。
1 2 1 1 2 4 2 1 1 2 4 8 4 2 1 1 2 4 8 168 4 2 11 2 4 8 16 32 16 8 4 2 11 2 4 8 16 32 64 32 16 8 4 2 11 2 4 8 16 32 64 128 64 32 16 8 4 2 1[选题人数:2] 6. 题目:十进制转换成二进制或十六进制编写程序,从键盘上输入一个十进制整数,然后显示对应的二进制值或十六进制值。
JAVA日期时间的计算
JAVA日期时间的计算最近,手头有不少项目,其中就有一个类似公文流转的项目,其中有一个模块是任务的制定,而在任务的类型中有一个循环任务,就是用户输入任务的开始日期、结束日期,还需要输入一个周期数,比如每周的星期几、每月的多少号等,这里面就牵扯到JAVA日期时间的计算,从网上收集了一下,整理下来,供大家参考^_^Java 语言的Calendar,GregorianCalendar (日历),Date(日期), 和DateFormat(日期格式)组成了Java标准的一个基本但是非常重要的部分. 日期是商业逻辑计算一个关键的部分. 所有的开发者都应该能够计算未来的日期, 定制日期的显示格式, 并将文本数据解析成日期对象。
学习日期, 日期格式, 日期的解析和日期的计算。
我们将讨论下面的类:1、具体类(和抽象类相对)java.util.Date2、抽象类java.text.DateFormat 和它的一个具体子类,java.text.SimpleDateFormat3、抽象类java.util.Calendar 和它的一个具体子类,java.util.GregorianCalendar 具体类可以被实例化, 但是抽象类却不能. 你首先必须实现抽象类的一个具体子类.1. java.util.Date及其格式化Date 类从Java 开发包(JDK) 1.0 就开始进化, 当时它只包含了几个取得或者设置一个日期数据的各个部分的方法, 比如说月, 日, 和年. 这些方法现在遭到了批评并且已经被转移到了Calendar类里去了, 我们将在本文中进一步讨论它. 这种改进旨在更好的处理日期数据的国际化格式. 就象在JDK 1.1中一样, Date 类实际上只是一个包裹类, 它包含的是一个长整型数据, 表示的是从GMT(格林尼治标准时间)1970年, 1 月1日00:00:00这一刻之前或者是之后经历的毫秒数.1.1. 创建java.util.DateJava统计从1970年1月1日起的毫秒的数量表示日期。
java获取年月日的方法
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类来格式化日期。
通过传入不同的格式化模式,我们可以获取所需的日期部分。
使用Java创建简单的日历应用程序
使用Java创建简单的日历应用程序-一个实战教程日历应用程序是一个有用的工具,它允许用户记录和管理事件、约会和提醒。
在这个实战博客中,我们将创建一个Java日历应用程序,演示如何使用Java编程语言和图形用户界面(GUI)库来实现事件管理和日期选择功能。
以下是本实战博客的主要内容:项目概述准备工作创建Java项目设计GUI界面实现日历视图添加事件管理功能总结让我们开始吧!1. 项目概述在本项目中,我们将创建一个简单的Java日历应用程序,它包括以下主要功能:显示日历界面,允许用户选择日期。
在日历中标记已经安排的事件和约会。
允许用户添加、编辑和删除事件。
提供事件的日期和时间提醒功能。
我们将使用Java编程语言和Swing GUI库来构建这个日历应用程序。
2. 准备工作在开始之前,确保您的开发环境已设置好。
我们将使用Java编程语言和Swing库来构建日历应用程序,不需要额外的工具或库。
3. 创建Java项目首先,创建一个新的Java项目,您可以使用任何Java集成开发环境(IDE)来完成此操作。
在项目中,我们将创建Java类来实现日历应用程序。
4. 设计GUI界面我们将创建一个简单的Swing GUI界面,用于显示日历界面和事件列表。
创建一个Java类,例如CalendarApp,并在其中创建GUI界面。
javaCopy codeimport 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 CalendarApp {private JFrame frame;private JPanel calendarPanel;private JPanel eventPanel;private JTextArea eventList;private JButton addButton;private JButton editButton;private JButton deleteButton;public CalendarApp() {frame = new JFrame("日历应用程序");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(800, 600);frame.setLayout(new BorderLayout());calendarPanel = new JPanel(new BorderLayout());eventPanel = new JPanel(new BorderLayout());eventList = new JTextArea();eventList.setEditable(false);JScrollPane eventScrollPane = new JScrollPane(eventList);addButton = new JButton("添加事件");editButton = new JButton("编辑事件");deleteButton = new JButton("删除事件");eventPanel.add(eventScrollPane, BorderLayout.CENTER);eventPanel.add(addButton, BorderLayout.NORTH);eventPanel.add(editButton, BorderLayout.WEST);eventPanel.add(deleteButton, BorderLayout.EAST);frame.add(calendarPanel, BorderLayout.WEST);frame.add(eventPanel, BorderLayout.CENTER);addButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {addEvent();}});editButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {editEvent();}});deleteButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {deleteEvent();}});frame.setVisible(true);}public static void main(String[] args) {SwingUtilities.invokeLater(() -> new CalendarApp());}private void addEvent() {// 实现添加事件的代码,略...}private void editEvent() {// 实现编辑事件的代码,略...}private void deleteEvent() {// 实现删除事件的代码,略...}}在上述代码中,我们创建了一个CalendarApp类,包括一个Swing窗口、日历界面和事件列表。
java获取每个月固定号数的方法
java获取每个月固定号数的方法以Java获取每个月固定号数的方法一、引言在编程中,我们经常需要获取每个月固定号数的日期,比如每个月的1号或者每个月的最后一天。
本文将介绍如何使用Java编程语言来获取每个月固定号数的方法。
二、使用Calendar类Java中的Calendar类提供了丰富的日期和时间操作方法,可以方便地获取每个月固定号数的日期。
1. 获取每个月的1号日期我们可以使用以下代码来获取每个月的1号日期:```javaimport java.util.Calendar;public class Main {public static void main(String[] args) {Calendar calendar = Calendar.getInstance();calendar.set(Calendar.DAY_OF_MONTH, 1);int year = calendar.get(Calendar.YEAR);int month = calendar.get(Calendar.MONTH) + 1;int day = calendar.get(Calendar.DAY_OF_MONTH);System.out.println("每个月的1号日期为:" + year + "-" + month + "-" + day);}}```运行以上代码,输出的结果为当前日期所在月份的1号日期。
例如,如果当前日期为2022年12月15日,输出结果为:每个月的1号日期为:2022-12-1。
2. 获取每个月的最后一天日期我们可以使用以下代码来获取每个月的最后一天日期:```javaimport java.util.Calendar;public class Main {public static void main(String[] args) {Calendar calendar = Calendar.getInstance();int year = calendar.get(Calendar.YEAR);int month = calendar.get(Calendar.MONTH) + 1;int lastDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);System.out.println("每个月的最后一天日期为:" + year + "-" + month + "-" + lastDay);}}```运行以上代码,输出的结果为当前日期所在月份的最后一天日期。
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日历当天日期标红
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中的Calendar日历API用法完全解析
Java中的Calendar⽇历API⽤法完全解析第⼀部分 Calendar介绍Calendar 定义:public abstract class Calendar implements Serializable, Cloneable, Comparable<Calendar> {}Calendar 可以看作是⼀个抽象类。
它的实现,采⽤了设计模式中的⼯⼚⽅法。
表现在:当我们获取Calendar实例时,Calendar会根据传⼊的参数来返回相应的Calendar对象。
获取Calendar实例,有以下两种⽅式:(1) 当我们通过 Calendar.getInstance() 获取⽇历时,默认的是返回的⼀个GregorianCalendar对象。
GregorianCalendar是Calendar的⼀个实现类,它提供了世界上⼤多数国家/地区使⽤的标准⽇历系统。
(2) 当我们通过 Calendar.getInstance(TimeZone timezone, Locale locale) 或 Calendar.getInstance(TimeZone timezone) 或Calendar.getInstance(Locale locale)获取⽇历时,是返回“对应时区(zone) 或地区(local)等所使⽤的⽇历”。
例如,若是⽇本,则返回JapaneseImperialCalendar对象。
参考如下代码:public static Calendar getInstance(){// 调⽤createCalendar()创建⽇历Calendar cal = createCalendar(TimeZone.getDefaultRef(), Locale.getDefault());cal.sharedZone = true;return cal;}public static Calendar getInstance(TimeZone zone){// 调⽤createCalendar()创建⽇历return createCalendar(zone, Locale.getDefault());}public static Calendar getInstance(Locale aLocale) {// 调⽤createCalendar()创建⽇历Calendar cal = createCalendar(TimeZone.getDefaultRef(), aLocale);cal.sharedZone = true;return cal;}public static Calendar getInstance(TimeZone zone,Locale aLocale){// 调⽤createCalendar()创建⽇历return createCalendar(zone, aLocale);}private static Calendar createCalendar(TimeZone zone,Locale aLocale){// (01) 若地区是“th”,则返回BuddhistCalendar对象// (02) 若地区是“JP”,则返回JapaneseImperialCalendar对象if ("th".equals(aLocale.getLanguage())&& ("TH".equals(aLocale.getCountry()))) {return new sun.util.BuddhistCalendar(zone, aLocale);} else if ("JP".equals(aLocale.getVariant())&& "JP".equals(aLocale.getCountry())&& "ja".equals(aLocale.getLanguage())) {return new JapaneseImperialCalendar(zone, aLocale);}// (03) 否则,返回GregorianCalendar对象return new GregorianCalendar(zone, aLocale);}当我们获取Calendar实例之后,就可以通过Calendar提供的⼀些列⽅法来操作⽇历。
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);。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
wekday=sum%7;
System.out.println("日\t一\t二\t三\t四\t五\t六");
for(int w=1;w<=wekday;w++){
System.out.print("\t");
}//循环用不到的先输出
sum+=29;
}else{
sum+=28;
}
}else{
if(m==4||m==6||m==9||m==11){
sum+=30;
}else{
sum+=31Байду номын сангаас
}
}
}//在精确到月的天数
}
wekday++;
}//这个循环输出内部
}
}
day=30;
}else{
day=31;
}
}//当月有多少天
for(int d=1;d<=day;d++){
if(wekday%7==6){
System.out.print(d+"\n");
}else{
System.out.print(d+"\t");
int year=in.nextInt();
System.out.println("请输入月份:");
int mouth=in.nextInt();
int sum=0,wekday;//将用到的距1900.1.1的总天数和星期数,现有总天数才能求当月1号星期几
for(int y=1900;y<year;y++){
int day;
if(mouth==2){
if(year%4==0&&year%100!=0||year%400==0){
day=29;
}else{
day=28;
}
}else{
if(mouth==4||mouth==6||mouth==9||mouth==11){
if(y%4==0&&y%100!=0||y%400==0){
sum+=366;
}else{
sum+=365;
}
}//先计算年份总天数
for(int m=1;m<mouth;m++){
if(m==2){
if(year%4==0&&year%100!=0||year%400==0){
import java.util.Scanner;
public class Test {
public static void main(String[] args){
Scanner in=new Scanner(System.in);
System.out.println("这个程序将输出1900年以后的指定年月的月历\n请输入年份:");