java日历制作源代码
- 格式:docx
- 大小:12.30 KB
- 文档页数:2
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 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日历小程序的功能、使用方法和设计原理。
功能:1. 显示日历:Java日历小程序可以显示当前月份的日历,并以日、周或月的形式展示。
用户可以通过界面上的上下翻页按钮切换月份,方便查看不同日期的日历。
2. 创建和编辑事件:用户可以通过Java日历小程序创建新的日历事件,并为每个事件指定标题、日期、时间和地点等详细信息。
程序还提供了事件编辑功能,允许用户修改已有事件的信息。
3. 提醒功能:Java日历小程序可以设置事件的提醒功能,提醒用户在指定的时间前提醒。
用户可以选择在事件开始前几分钟、几小时或几天提醒,并可以自定义提醒方式,如弹窗、声音或邮件通知等。
4. 重复事件:用户可以为事件设置重复功能,使事件在指定的日期间隔内重复发生。
可以选择每天、每周、每月或每年重复,并可以设置重复的结束日期。
5. 时间段计算:Java日历小程序可以计算两个日期之间的时间段,如计算两个事件之间的天数、小时数或分钟数等。
用户可以选择计算方式,并获取精确的时间段结果。
使用方法:1. 下载和安装:用户可以从官方网站上下载Java日历小程序的安装包,然后按照安装向导进行安装。
安装完成后,用户可以在桌面或开始菜单中找到程序的快捷方式。
2. 打开程序:双击程序的快捷方式,Java日历小程序将启动并显示当前月份的日历。
用户可以通过界面上的按钮和菜单来使用各种功能。
3. 创建事件:用户可以点击界面上的“添加事件”按钮,弹出一个对话框,输入事件的详细信息,如标题、日期、时间和地点等。
点击“确定”按钮后,事件将被创建并显示在日历上。
4. 编辑事件:用户可以在日历上点击已有的事件,弹出一个对话框,允许用户修改事件的信息。
日历源代码——java//import java.sql.Date;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;import java.util.Locale;public class GregorianCalendar日历 {public static void main(String[] args) { //设置不同地区Locale.setDefault();//创建当前日历对象GregorianCalendar now = new GregorianCalendar();//从当前时期对象是取出时间日期对象//编辑错误:Type mismatch: cannot convert from java.util.Date to java.sql.DateDate date = now.getTime();//将时间日期对象按字符形式打印System.out.println(date.toString());//重新将时间对象设置到日期对象中now.setTime(date);//从当前日期对象是取出当前月份、日期int today =now.get(Calendar.DAY_OF_MONTH);int month = now.get(Calendar.MONTH);//获取本月开始日期now.set(Calendar.DAY_OF_MONTH, 1);//获取本月开始日期在一周中的编号int week = now.get(Calendar.DAY_OF_WEEK);//打印日历头并换行设置当前月中第一天的开始位置System.out.println("星期日星期一星期二星期三星期四星期五星期六");//设置当前月中第一天的开始位置for( int i = Calendar.SUNDAY; i < week; i++){ System.out.print(" ");//按规格打印当前月的日期数字while(now.get(Calendar.MONTH) ==month){//取出当前日期int day =now.get(Calendar.DAY_OF_MONTH);//设置日期数字小于10与不小于10两种情况的打印规格if(day < 10){//设置当前日期的表现形式if(day == today)System.out.print(" <" + day + "> ");elseSystem.out.print(" " + day + " ");}else{//设置当前日期的表现形式if(day == today)System.out.print(" <" + day + "> ");elseSystem.out.print(" " + day + " ");}//设置什么时候换行if(week == Calendar.SATURDAY)System.out.println();//设置日期与星期几为下一天now.add(Calendar.DAY_OF_MONTH, 1);week = now.get(Calendar.DAY_OF_WEEK);}}}}。
日历代码
1. 简介
日历是用来显示日期的一种工具。
在计算机编程中,我们可以通过编写代码来生成和显示日历。
本文将介绍如何用Python编写一个简单的日历代码。
我们将使用Python的datetime和calendar模块来实现这个功能。
2. 实现步骤
2.1 导入模块
我们首先需要导入Python的datetime和calendar模块。
datetime模块提供了日期和时间的相关功能,而calendar模块则提供了生成日历的功能。
import datetime
import calendar
2.2 获取当前日期
我们可以使用datetime模块的date类来获取当前日期。
today = datetime.date.today()
2.3 获取当前月份的日历
我们可以使用calendar模块的monthcalendar函数来生成当前月份的日历。
cal = calendar.monthcalendar(today.year, today.month)
2.4 打印日历
我们可以使用循环遍历生成的日历列表,并打印出每个日期。
```python for week in cal: for day in week: if day == 0: print(。
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编程语言和图形用户界面(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窗口、日历界面和事件列表。
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⽇历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常用日历|日期|时间|星期工具类(封装方法非常多)相信大部分程序语言都需要处理日期、日历和时间相关的数据。
本工具类是基于JAVA语言,封装了常用的方法,这些方法来源于各种实际项目,大部分都是会直接用到的。
此工具类不依赖第三方JAR包,可以直接放入您的项目中使用。
方法全是自己手写的,若有不正确之处还请指出。
此工具类会不断更新完善,有需要的就收藏一下吧。
import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Arrays;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;/*** 日历日期工具类* @decription提供常用的获取日期、星期、周数以及转换操作* @author Zebe* @date 2014/11/27* @version 1.0.2*/public class CalendarUtil {private static int WEEKS = 0;private static SimpleDateFormat SDF = new SimpleDateFormat("yyyy-MM-dd");private static SimpleDateFormat SDFT = new SimpleDateFormat("yyyy-MM-dd HH:m m:ss");/*** 获取当前年份* @return String 例如:2014*/public static String getYear() {Calendar cd = Calendar.getInstance();return String.valueOf(cd.get(Calendar.YEAR));}/*** 获取某个日期中的年份* @return String 例如:2014-05-16 返回 2014*/public static String getYearOfDate(String date) {Calendar cd = Calendar.getInstance();try {cd.setTime(SDF.parse(date));} catch (Exception e) {e.printStackTrace();}return String.valueOf(cd.get(Calendar.YEAR));}/*** 获取当前月份* @return String 例如:4*/public static String getMonth() {Calendar cd = Calendar.getInstance();return String.valueOf(cd.get(Calendar.MONTH) + 1);}/*** 获取某个日期中的月份* @return String 例如:2014-05-16 返回 5*/public static String getMonthOfDate(String date) {Calendar cd = Calendar.getInstance();try {cd.setTime(SDF.parse(date));} catch (Exception e) {e.printStackTrace();}return String.valueOf(cd.get(Calendar.MONTH) + 1); }/*** 获取日期中的英文月份缩写* @return String*/public static String getMonthShortEnNameOfDate(String date) { Calendar cd = Calendar.getInstance();String result = "";try {cd.setTime(SDF.parse(date));int month = cd.get(Calendar.MONTH) + 1;switch (month) {case1:result = "JAN";break;result = "FEB";break;case3:result = "MAR";break;case4:result = "APR";break;case5:result = "MAY";break;case6:result = "JUN";break;case7:result = "JUL";break;case8:result = "AUG";break;case9:result = "SEP";break;case10:result = "OCT";break;case11:result = "NOV";break;result = "DEC";break;}} catch (Exception e) {e.printStackTrace();}return result;}/*** 获取当前日期* @return String 例如:23*/public static String getDay() {Calendar cd = Calendar.getInstance();return String.valueOf(cd.get(Calendar.DAY_OF_MONTH)); }/*** 获取某个日期中的日期* @return String 例如:2014-05-16 返回 16*/public static String getDayOfDate(String date) {Calendar cd = Calendar.getInstance();try {cd.setTime(SDF.parse(date));} catch (Exception e) {e.printStackTrace();}return String.valueOf(cd.get(Calendar.DAY_OF_MONTH)); }/*** 获取昨天日期* @return yyyy-MM-dd*/public static String getYesterday() {Calendar cal = Calendar.getInstance();try {cal.setTime(SDF.parse(getToday()));cal.add(Calendar.DAY_OF_YEAR, -1);} catch (Exception e) {e.printStackTrace();}return SDF.format(cal.getTime());}/*** 获取今天日期* @return yyyy-MM-dd*/public static String getToday() {return SDF.format(new Date());}/*** 获取明天日期* @return yyyy-MM-dd*/public static String getTommorow() {Calendar cal = Calendar.getInstance();try {cal.setTime(SDF.parse(getToday()));cal.add(Calendar.DAY_OF_YEAR, +1);} catch (Exception e) {e.printStackTrace();}return SDF.format(cal.getTime());}/*** 获取当前日期和时间* @return yyyy-MM-dd HH:mm:ss*/public static String getDateTime() {return SDFT.format(new Date());}/*** 获得当前日期与本周一相差的天数* @return int*/private static int getMondayPlus() {Calendar cd = Calendar.getInstance();// 获得今天是一周的第几天,星期日是第一天,星期二是第二天......int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK);if (dayOfWeek == 1) {return -6;} else {return2 - dayOfWeek;}}/*** 获得上周星期一的日期* @return yyyy-MM-dd*/public static String getPreMonday() {WEEKS--;int mondayPlus = getMondayPlus();GregorianCalendar currentDate = new GregorianCalendar();currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * WEEKS);Date monday = currentDate.getTime();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");return sdf.format(monday);}/*** 获得本周星期一的日期* @return yyyy-MM-dd*/public static String getMonday() {WEEKS = 0;int mondayPlus = getMondayPlus();GregorianCalendar currentDate = new GregorianCalendar();currentDate.add(GregorianCalendar.DATE, mondayPlus);Date monday = currentDate.getTime();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");return sdf.format(monday);}/*** 获得下周星期一的日期* @return yyyy-MM-dd*/public static String getNextMonday() {WEEKS++;int mondayPlus = getMondayPlus();GregorianCalendar currentDate = new GregorianCalendar();currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * WEEKS);Date monday = currentDate.getTime();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");return sdf.format(monday);}/*** 获取某一年第几周的星期一* @return yyyy-MM-dd*/public static String getMondayOfWeek(int year, int week) {Calendar cal = Calendar.getInstance();cal.setFirstDayOfWeek(Calendar.MONDAY);cal.clear();cal.set(Calendar.YEAR, year);cal.set(Calendar.WEEK_OF_YEAR,week);cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);return SDF.format(cal.getTime());}/*** 获取某一年第几周的星期日* @return yyyy-MM-dd*/public static String getSundayOfWeek(int year, int week) {Calendar cal = Calendar.getInstance();cal.setFirstDayOfWeek(Calendar.MONDAY);cal.clear();cal.set(Calendar.YEAR, year);cal.set(Calendar.WEEK_OF_YEAR,week);cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);return SDF.format(cal.getTime());}/*** 获取指定周星期日的日期* @return yyyy-MM-dd*/public static String getSunday() {int mondayPlus = getMondayPlus();GregorianCalendar currentDate = new GregorianCalendar();currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * WEEKS + 6);Date monday = currentDate.getTime();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");return sdf.format(monday);}/*** 获取当前周是本月的第几周* @return String*/public static int getWeekOfMonth() {Calendar cd = Calendar.getInstance();cd.setFirstDayOfWeek(Calendar.MONDAY);return cd.get(Calendar.WEEK_OF_MONTH);}/*** 获取当前周是本年的第几周* @return String*/public static int getWeekOfYear() {Calendar cd = Calendar.getInstance();cd.setFirstDayOfWeek(Calendar.MONDAY);return cd.get(Calendar.WEEK_OF_YEAR);}/*** 获取本月第一天* @param date* @return yyyy-MM-dd*/public static String getFirstDayOfThisMonth() {String year = getYear();String month = getMonth();if (month.length() == 1) {return year + "-0" + month + "-01";}return year + "-" + month + "-01";}/*** 获取本月最后一天* @param date* @return yyyy-MM-dd*/public static String getLastDayOfThisMonth() {Calendar calendar = Calendar.getInstance();try {calendar.set(calendar.get(Calendar.YEAR), calendar.get(Cal endar.MONTH) + 1, 1);calendar.add(Calendar.DATE, -1);} catch (Exception e) {e.printStackTrace();}return SDF.format(calendar.getTime());}/*** 获取指定年份月份的最后一天(整形参数)* @param month* @return yyyy-MM-dd*/public static String getLastDayOfMonth(int year, int month) {Calendar calendar = Calendar.getInstance();try {calendar.set(year, month, 1);calendar.add(Calendar.DATE, -1);} catch (Exception e) {}return SDF.format(calendar.getTime());}/*** 获取指定年份月份的最后一天(字符串参数)* @param month* @return yyyy-MM-dd*/public static String getLastDayOfMonth(String year, String month) { int y = Integer.parseInt(year);int m = Integer.parseInt(month);return getLastDayOfMonth(y, m);}/*** 获取两个日期之间相差天数* @param fromDay* @param toDay* @return long*/public static long getDaysBetween(String fromDay, String toDay) { long days = 0;try {Date d1 = SDF.parse(fromDay);Date d2 = SDF.parse(toDay);long diff = d2.getTime() - d1.getTime();days = diff / (1000 * 60 * 60 * 24);} catch (Exception e) {}return days;}/*** 按指定格式转换日期对象为字符串* @param date 日期对象* @param format 日期格式,如:yyyy-MM-dd HH:mm:ss* @return String*/public static String convertDateToString(Date date, String format) { SimpleDateFormat mySDF = new SimpleDateFormat(format);String dateStr = mySDF.format(date);return dateStr;}/*** 按指定格式转换字符串为日期对象* @param date 字符串日期* @param format 日期格式,如:yyyy-MM-dd HH:mm:ss* @return String*/public static Date convertStringToDate(String date, String format) { try {SimpleDateFormat mySDF = new SimpleDateFormat(format);Date dateTemp = mySDF.parse(date);return dateTemp;} catch (Exception e) {e.printStackTrace();return null;}}/*** 获取指定分钟前的时间字符串* @param minute 分钟* @return String yyyy-MM-dd HH:mm:ss*/public static String getPastTimeByMinute(int minute) {Date date = new Date(new Date().getTime() - (minute * 60 * 1000));return convertDateToString(date, "yyyy-MM-dd HH:mm:ss");}/*** 获取指定分钟前的时间字符串(自定义格式)* @param minute 分钟* @param format 日期格式,如:yyyy-MM-dd HH:mm:ss* @return String*/public static String getPastTimeByMinute(int minute, String format) { Date date = new Date(new Date().getTime() - (minute * 60 * 1000));return convertDateToString(date, format);}/*** 获取指定天数前的时间字符串* @param day 天数* @return String yyyy-MM-dd HH:mm:ss*/public static String getPastTimeByDay(int day) {Date date = new Date(new Date().getTime() - (day * 24 * 60 * 60 * 10 00));return convertDateToString(date, "yyyy-MM-dd HH:mm:ss");}/*** 获取指定天数前的时间字符串(自定义格式)* @param day 天数* @param format 日期格式,如:yyyy-MM-dd HH:mm:ss* @return String yyyy-MM-dd HH:mm:ss*/public static String getPastTimeByDay(int day, String format) {Date date = new Date(new Date().getTime() - (day * 24 * 60 * 60 * 10 00));return convertDateToString(date, format);}/*** 获取基于某个时间点后多少天后的时间点* @description如:2015-08-01 16:00:05,15天之后的时间点是* @param beginTime 开始时间点 yyyy-MM-dd HH:mm:ss* @param day 天数* @return String yyyy-MM-dd HH:mm:ss*/public static String getFutureTimeByDay(String beginTime, int day) {Date futureDate = new Date();try {Date debinDate = SDFT.parse(beginTime);futureDate = new Date(debinDate.getTime() + (day * 24 * 60 * 60 * 1000));} catch (ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();}return convertDateToString(futureDate, "yyyy-MM-dd HH:mm:ss");}/*** 判断一组日期是否连续* @param dates Date数组* @return boolean*/public static boolean isContinuousDate(Date[] dates) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");long[] datesNew;boolean continuous = false;try {if (dates != null && dates.length >= 2) {// 通过 yyyy-MM-dd 进行格式化并得到一个long类型的日期数组datesNew = new long[dates.length];for (int i=0; i<dates.length; i++) {datesNew[i] = sdf.parse(sdf.format(date s[i])).getTime();}// 对这个数组进行排序Arrays.sort(datesNew);// 遍历新的日期数组,计算两个日期间的时间差(8640 0000为一整天的差距)for (int i=0; i<datesNew.length; i++) {Long tempDate = datesNew[i];if ((i + 1) < datesNew.length) {Long nextDate = datesNew[i + 1];if (Math.abs(tempDate - nextD ate) != 86400000) {return false;}}}return true;}} catch (Exception e) {e.printStackTrace();}return continuous;}/*** 方法测试* @param args* @throws ParseException*/public static void main(String[] args)throws ParseException {System.out.println("获取当前年:" + getYear());System.out.println("获取日期中的年份:" + getYearOfDate("2012-12-08 "));System.out.println("获取当前月:" + getMonth());System.out.println("获取日期中的月份:" + getMonthOfDate("2012-12-08 "));System.out.println("获取当前日:" + getDay());System.out.println("获取日期中的日:" + getDayOfDate("2012-12-08"));System.out.println("获取昨天日期:" + getYesterday());System.out.println("获取今天日期:" + getToday());System.out.println("获取明天日期:" + getTommorow());System.out.println("获取当前日期和时间:" + getDateTime());System.out.println("获得当前日期与本周一相差的天数:" + getMondayPlu s());System.out.println("获得上周星期一的日期:" + getPreMonday());System.out.println("获得上周星期日的日期:" + getSunday());System.out.println("获得本周星期一的日期:" + getMonday());System.out.println("获得本周星期日的日期:" + getSunday());System.out.println("获得下周星期一的日期:" + getNextMonday());System.out.println("获得下周星期日的日期:" + getSunday());System.out.println("获取当前周是本月的第几周:" + getWeekOfMonth());System.out.println("获取当前周是本年的第几周:" + getWeekOfYear());System.out.println("获取本月第一天:" + getFirstDayOfThisMonth());System.out.println("获取本月最后一天:" + getLastDayOfThisMonth());System.out.println("获取指定年份月份最后一天:" + getLastDayOfMonth(2 044, 2) + " <2044年2月>");System.out.println("获取两个日期之间相差天数:" + getDaysBetween("20 14-09-30", "2014-10-02") + " <2014-09-30~2014-12-02>");System.out.println("按指定格式转换日期对象为字符串:" + convertDateT oString(new Date(), "yyyy-MM-dd HH:mm:ss"));System.out.println("按指定格式转换字符串为日期对象:" + convertStrin gToDate("2015-12-12", "yyyy-MM-dd"));System.out.println("获取某一年第几周的星期一:" + getMondayOfWeek(20 14, 51));System.out.println("获取某一年第几周的星期日:" + getSundayOfWeek(20 14, 51));System.out.println("按照 yyy-M-d HH:mm 格式得到当前日期时间:" + con vertDateToString(new Date(), "yyyy-M-d HH:mm"));System.out.println("5分钟前的时间:" + getPastTimeByMinute(5));System.out.println("2天前的此时此刻:" + getPastTimeByDay(2));System.out.println("时间点 2015-08-21 16:00:05,12天之后的时间点是" + getFutureTimeByDay("2015-08-21 16:00:05", 12));// 判断连续日期Date d1 = new SimpleDateFormat("yyyy-MM-dd").parse("2015-11-18 15:5 6:20");Date d2 = new SimpleDateFormat("yyyy-MM-dd").parse("2015-11-19 14:5 3:23");Date d3 = new SimpleDateFormat("yyyy-MM-dd").parse("2015-11-20 14:2 2:20");Date d4 = new SimpleDateFormat("yyyy-MM-dd").parse("2015-11-21 19:5 6:32");Date[] dates = {d1, d2, d3, d4};System.out.println(SDF.format(d1) + "," + SDF.format(d2) + "," + SD F.format(d3) + "," + SDF.format(d4) + " 是连续日期吗?" + isContinuousDate(dates));}}调用更多,写更少!此工具类来源于【最全面的编程语言工具类平台】:。
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 日历显示。
2013-2014学年第二学期《面向对象程序设计》课程设计报告题目:万年历系统专业:计算机科学与技术班级:姓名:学号:指导教师:成绩:计算机与信息工程系2014年6月6日目录1设计内容及要求设计内容万年历,实际上就是记录一定时间范围内(比如100年或更多)的具体阳历或阴历的日期的年历,方便有需要的人查询使用。
在我设计的万年历中主要有:(1)使用图形用户界面来查询用用户所需的日期信息,符合日常软件使用规范。
(2)按月份查询,实现了显示查询1901~2100年某月所有日期的阴阳历对照。
(3)并且添加了重大节日与星座等信息,界面采用日常的星期与月份结合的格式,方便查看与使用。
(4)编写万年历的课程设计,是为了使同学们更加了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。
为后续各门计算机课程的学习和毕业设计打下坚实基础。
设计任务及具体要求利用JAVA语言编写的万年历系统采用了多种JAVA语句来实现多种功能。
用户可以通过本程序的applet运行界面来查找一整年某月的农历和阳历,可以查找用户所想了解的某一天具体为星期几,并且可以看到一些重大节日的具体时间。
要求:满足设计万年历系统的目的,即当用户查询年份与月份时,系统就要将这一年的某一月份的阴历与阳历全部显示出来,并且附带这一月份的重大节日。
当用户随意改动年份或月份时系统自动显示与星期对应的日期。
用户点击日期时系统会显示具体星座信息。
2概要设计程序设计思路(1)总天数的算法:首先用if语句判断定义年到输入年之间每一年是否为闰年,是闰年,该年的总天数为366,否则,为365。
然后判断输入的年是否为定义年,若是,令总天数S=1,否则,用累加法计算出定义年到输入年之间的总天数,再把输入年的一月到要输出的月份之间的天数累加起来,若该月是闰年中的月份并且该月还大于二月,再使总天数加1,否则,不加,既算出从定义年一月一日到输出年的该月一日的总天数。