java万年历程序代码
- 格式:doc
- 大小:35.50 KB
- 文档页数:4
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();}}}}。
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获取当天、当前⽉、当前年(今年)的开始和结束时间戳最近在做统计相关的功能的时候涉及到了获取当天的开始和结束的时间戳、当⽉和当年的开始结束时间戳,特此记录,以作备忘。
相关代码package com.lingyejun.authenticator;import java.time.Instant;import java.time.LocalDateTime;import java.time.ZoneId;import java.util.Calendar;import java.util.TimeZone;public class CalendarAdjust {/*** 获取指定某⼀天的开始时间戳** @param timeStamp 毫秒级时间戳* @param timeZone 如 GMT+8:00* @return*/public static Long getDailyStartTime(Long timeStamp, String timeZone) {Calendar calendar = Calendar.getInstance();calendar.setTimeZone(TimeZone.getTimeZone(timeZone));calendar.setTimeInMillis(timeStamp);calendar.set(Calendar.HOUR_OF_DAY, 0);calendar.set(Calendar.SECOND, 0);calendar.set(Calendar.MINUTE, 0);calendar.set(LISECOND, 0);return calendar.getTimeInMillis();}/*** 获取指定某⼀天的结束时间戳** @param timeStamp 毫秒级时间戳* @param timeZone 如 GMT+8:00* @return*/public static Long getDailyEndTime(Long timeStamp, String timeZone) {Calendar calendar = Calendar.getInstance();calendar.setTimeZone(TimeZone.getTimeZone(timeZone));calendar.setTimeInMillis(timeStamp);calendar.set(Calendar.HOUR_OF_DAY, 23);calendar.set(Calendar.MINUTE, 59);calendar.set(Calendar.SECOND, 59);calendar.set(LISECOND, 999);return calendar.getTimeInMillis();}/*** 获取当⽉开始时间戳** @param timeStamp 毫秒级时间戳* @param timeZone 如 GMT+8:00* @return*/public static Long getMonthStartTime(Long timeStamp, String timeZone) {Calendar calendar = Calendar.getInstance();// 获取当前⽇期calendar.setTimeZone(TimeZone.getTimeZone(timeZone));calendar.setTimeInMillis(timeStamp);calendar.add(Calendar.YEAR, 0);calendar.add(Calendar.MONTH, 0);calendar.set(Calendar.DAY_OF_MONTH, 1);// 设置为1号,当前⽇期既为本⽉第⼀天calendar.set(Calendar.HOUR_OF_DAY, 0);calendar.set(Calendar.MINUTE, 0);calendar.set(Calendar.SECOND, 0);calendar.set(LISECOND, 0);return calendar.getTimeInMillis();}/*** 获取当⽉的结束时间戳** @param timeStamp 毫秒级时间戳* @param timeZone 如 GMT+8:00* @return*/public static Long getMonthEndTime(Long timeStamp, String timeZone) {Calendar calendar = Calendar.getInstance();// 获取当前⽇期calendar.setTimeZone(TimeZone.getTimeZone(timeZone));calendar.setTimeInMillis(timeStamp);calendar.add(Calendar.YEAR, 0);calendar.add(Calendar.MONTH, 0);calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));// 获取当前⽉最后⼀天calendar.set(Calendar.HOUR_OF_DAY, 23);calendar.set(Calendar.MINUTE, 59);calendar.set(Calendar.SECOND, 59);calendar.set(LISECOND, 999);return calendar.getTimeInMillis();}/*** 获取当年的开始时间戳** @param timeStamp 毫秒级时间戳* @param timeZone 如 GMT+8:00* @return*/public static Long getYearStartTime(Long timeStamp, String timeZone) {Calendar calendar = Calendar.getInstance();// 获取当前⽇期calendar.setTimeZone(TimeZone.getTimeZone(timeZone));calendar.setTimeInMillis(timeStamp);calendar.add(Calendar.YEAR, 0);calendar.add(Calendar.DATE, 0);calendar.add(Calendar.MONTH, 0);calendar.set(Calendar.DAY_OF_YEAR, 1);calendar.set(Calendar.HOUR_OF_DAY, 0);calendar.set(Calendar.MINUTE, 0);calendar.set(Calendar.SECOND, 0);calendar.set(LISECOND, 0);return calendar.getTimeInMillis();}/*** 获取当年的最后时间戳** @param timeStamp 毫秒级时间戳* @param timeZone 如 GMT+8:00* @return*/public static Long getYearEndTime(Long timeStamp, String timeZone) {Calendar calendar = Calendar.getInstance();// 获取当前⽇期calendar.setTimeZone(TimeZone.getTimeZone(timeZone));calendar.setTimeInMillis(timeStamp);int year = calendar.get(Calendar.YEAR);calendar.clear();calendar.set(Calendar.YEAR, year);calendar.set(Calendar.HOUR_OF_DAY, 23);calendar.set(Calendar.MINUTE, 59);calendar.set(Calendar.SECOND, 59);calendar.set(LISECOND, 999);calendar.roll(Calendar.DAY_OF_YEAR, -1);return calendar.getTimeInMillis();}/*** 时间戳转字符串** @param timestamp 毫秒级时间戳* @param zoneId 如 GMT+8或UTC+08:00* @return*/public static String timestampToStr(long timestamp, String zoneId) {ZoneId timezone = ZoneId.of(zoneId);LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(timestamp), timezone);return localDateTime.toString();}public static void main(String[] args) {Long currentTime = System.currentTimeMillis();System.out.println("Current Time : " + currentTime + " = " + timestampToStr(currentTime, "GMT+8"));Long dailyStart = getDailyStartTime(currentTime, "GMT+8:00");Long dailyEnd = getDailyEndTime(currentTime, "GMT+8:00");Long monthStart = getMonthStartTime(currentTime, "GMT+8:00");Long monthEnd = getMonthEndTime(currentTime, "GMT+8:00");Long yearStart = getYearStartTime(currentTime, "GMT+8:00");Long yearEnd = getYearEndTime(currentTime, "GMT+8:00");System.out.println("Daily Start : " + dailyStart + " = " + timestampToStr(dailyStart, "GMT+8") + " Daily End : " + dailyEnd + " = " + timestampToStr(dailyEnd, "GMT+8"));System.out.println("Month Start : " + monthStart + " = " + timestampToStr(monthStart, "GMT+8") + " Month End : " + monthEnd + " = " + timestampToStr(monthEnd, "GMT+8")); System.out.println("Year Start : " + yearStart + " = " + timestampToStr(yearStart, "GMT+8") + " Year End : " + yearEnd + " = " + timestampToStr(yearEnd, "GMT+8"));}}效果。
JAVA将输⼊的⽇期转换为中⽂⽇期JAVA将输⼊的⽇期转换为中⽂⽇期(例如: 2007-10-05 --> ⼆○○七年⼗⽉五⽇)package com.business.practitioner;import java.text.SimpleDateFormat;import java.util.Date;/*** Creation date: 2010-5-22下午03:41:58* 功能: 将输⼊的⽇期转换为中⽂⽇期(例如: 2007-10-05 --> ⼆○○七年⼗⽉五⽇)* 说明:此程序假定输⼊格式为yyyy-mm-dd, 且年⽉⽇部分都为数字, 没有加上⾮法* 输⼊的相关校验* 测试可以输⼊ 2007-01-05* 2007-1-05* 2007-10-05*/public class DateConvertor {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubString issueDate = "2001-12-25";System.out.println(getYearStr(formatStr(issueDate)));}/*** create date:2010-5-22下午04:29:37* 描述:将⽇期转换为指定格式字符串* @param date ⽇期* @return*/public static String getDateStr(Date date){SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd" );String datestr = sdf.format(date);return datestr;}/*** create date:2010-5-22下午03:40:44* 描述:取出⽇期字符串中的年份字符串* @param str ⽇期字符串* @return*/public static String getYearStr(String str){String yearStr = "";yearStr = str.substring(0,4);return yearStr;}/*** create date:2010-5-22下午03:40:47* 描述:取出⽇期字符串中的⽉份字符串* @param str⽇期字符串* @return*/public static String getMonthStr(String str){String m;int startIndex = str.indexOf("年");int endIndex = str.indexOf("⽉");monthStr = str.substring(startIndex+1,endIndex);return monthStr;}/*** create date:2010-5-22下午03:32:31* 描述:将源字符串中的阿拉伯数字格式化为汉字* @param sign 源字符串中的字符* @return*/public static char formatDigit(char sign){if(sign == '0')sign = '0';if(sign == '1')sign = '⼀';if(sign == '2')sign = '⼆';if(sign == '3')sign = '三';if(sign == '4')sign = '四';if(sign == '5')sign = '五';if(sign == '6')sign = '六';if(sign == '7')sign = '七';if(sign == '8')sign = '⼋';if(sign == '9')sign = '九';return sign;}/*** create date:2010-5-22下午03:31:51* 描述:获得⽉份字符串的长度* @param str 待转换的源字符串* @param pos1 第⼀个'-'的位置* @param pos2 第⼆个'-'的位置* @return*/public static int getMidLen(String str,int pos1,int pos2){return str.substring(pos1+1, pos2).length();}/*** create date:2010-5-22下午03:32:17* 描述:获得⽇期字符串的长度* @param str 待转换的源字符串* @param pos2 第⼆个'-'的位置* @return*/public static int getLastLen(String str,int pos2){return str.substring(pos2+1).length();}/*** create date:2010-5-22下午03:40:50* 描述:取出⽇期字符串中的⽇字符串* @param str ⽇期字符串* @return*/public static String getDayStr(String str){String dayStr = "";int startIndex = str.indexOf("⽉");int endIndex = str.indexOf("⽇");dayStr = str.substring(startIndex+1,endIndex);return dayStr;}/*** create date:2010-5-22下午03:32:46* 描述:格式化⽇期* @param str 源字符串中的字符* @return*/public static String formatStr(String str){StringBuffer sb = new StringBuffer();int pos1 = str.indexOf("-");int pos2 = stIndexOf("-");for(int i = 0; i < 4; i++){sb.append(formatDigit(str.charAt(i)));}sb.append('年');if(getMidLen(str,pos1,pos2) == 1){sb.append(formatDigit(str.charAt(5))+"⽉");if(str.charAt(7) != '0'){if(getLastLen(str, pos2) == 1){sb.append(formatDigit(str.charAt(7))+"⽇");}if(getLastLen(str, pos2) == 2){if(str.charAt(7) != '1' && str.charAt(8) != '0'){sb.append(formatDigit(str.charAt(7))+"⼗"+formatDigit(str.charAt(8))+"⽇"); }else if(str.charAt(7) != '1' && str.charAt(8) == '0'){sb.append(formatDigit(str.charAt(7))+"⼗⽇");}else if(str.charAt(7) == '1' && str.charAt(8) != '0'){sb.append("⼗"+formatDigit(str.charAt(8))+"⽇");}else{sb.append("⼗⽇");}}}else{sb.append(formatDigit(str.charAt(8))+"⽇");}}if(getMidLen(str,pos1,pos2) == 2){if(str.charAt(5) != '0' && str.charAt(6) != '0'){sb.append("⼗"+formatDigit(str.charAt(6))+"⽉");if(getLastLen(str, pos2) == 1){sb.append(formatDigit(str.charAt(8))+"⽇");}if(getLastLen(str, pos2) == 2){if(str.charAt(8) != '0'){if(str.charAt(8) != '1' && str.charAt(9) != '0'){sb.append(formatDigit(str.charAt(8))+"⼗"+formatDigit(str.charAt(9))+"⽇"); }else if(str.charAt(8) != '1' && str.charAt(9) == '0'){sb.append(formatDigit(str.charAt(8))+"⼗⽇");}else if(str.charAt(8) == '1' && str.charAt(9) != '0'){sb.append("⼗"+formatDigit(str.charAt(9))+"⽇");}else{sb.append("⼗⽇");}}else{sb.append(formatDigit(str.charAt(9))+"⽇");}}}else if(str.charAt(5) != '0' && str.charAt(6) == '0'){sb.append("⼗⽉");if(getLastLen(str, pos2) == 1){sb.append(formatDigit(str.charAt(8))+"⽇");}if(getLastLen(str, pos2) == 2){if(str.charAt(8) != '0'){if(str.charAt(8) != '1' && str.charAt(9) != '0'){sb.append(formatDigit(str.charAt(8))+"⼗"+formatDigit(str.charAt(9))+"⽇"); }else if(str.charAt(8) != '1' && str.charAt(9) == '0'){sb.append(formatDigit(str.charAt(8))+"⼗⽇");}else if(str.charAt(8) == '1' && str.charAt(9) != '0'){sb.append("⼗"+formatDigit(str.charAt(9))+"⽇");}else{sb.append("⼗⽇");}}else{sb.append(formatDigit(str.charAt(9))+"⽇");}}}else{sb.append(formatDigit(str.charAt(6))+"⽉");if(getLastLen(str, pos2) == 1){sb.append(formatDigit(str.charAt(8))+"⽇");}if(getLastLen(str, pos2) == 2){if(str.charAt(8) != '0'){if(str.charAt(8) != '1' && str.charAt(9) != '0'){sb.append(formatDigit(str.charAt(8))+"⼗"+formatDigit(str.charAt(9))+"⽇"); }else if(str.charAt(8) != '1' && str.charAt(9) == '0'){sb.append(formatDigit(str.charAt(8))+"⼗⽇");}else if(str.charAt(8) == '1' && str.charAt(9) != '0'){sb.append("⼗"+formatDigit(str.charAt(9))+"⽇");}else{sb.append("⼗⽇");}}else{sb.append(formatDigit(str.charAt(9))+"⽇");}}}}return sb.toString(); }}。
*******************实践教学*******************兰州理工大学计算机与通信学院2012年秋季学期Java 课程设计题目:万年历的设计专业班级:姓名:学号:指导教师:成绩:目录摘要 (2)序言 (3)正文 (4)一、系统分析与设计 (4)二、详细设计 (5)2.1 类Calendars (5)2.2 类Time (5)2.3 类CalTabel (5)三、系统测试 (6)四、软件使用说明书 (9)设计总结 (10)参考文献 (11)致谢 (12)附录1(源代码) (13)摘要根据万年历的需要,设计一个万年历的程序,实现在此万年历表中有关日期和时间的基本操作:显示当时系统的日期和时间;显示当日的年和月;通过查询显示指定年、月的日历;设置北京时间,以显示北京和格林威治的时间并以设定的时间开始计时。
设置时间和查询日历通过设计的窗体执行和显示。
关键词:万年历;图形界面;java技术序言1996年Java第一次发布就引起了人们的极大兴趣。
关注Java的人士不仅限于计算机出版界,还有诸如《纽约时报》、《华盛顿邮报》、《商业周刊》这样的主流媒体。
Java时第一种也是唯一一种在National Public Radio上占用了十分钟时间进行介绍的程序设计语言,并且还得到了$100 000 000的风险投资基金。
这些基金全部用来支持这种特别的计算机语言开发的产品。
Java语言在Internet舞台上以及亮相便名声大噪,其原因在于它将有望成为连接用户与信息的万能胶,而不论这些信息来源于Web服务器、数据库、信息提供商,还是任何其他渠道,Java固有的可靠性与安全性不仅令Java程序员放心,也令使用Java程序的用户放心。
而此次将用Java设计一个万年历表,我们更加了解Java面向对象的程序设计语言。
正文一、系统分析与设计1、系统的要求(1)定义一个时间类Time,能提供时、分、秒组成的时间,并提供时间增加的方法(按秒);(2)定义一个日期类Date,记录年、月、日,并提供日期增加的方法(按天);(3)由类Time和日期类Date,派生出DateTime类,除具有年、月、日、时、分、秒外,还增加国名和与格林威治时间的差;(4)输入年、月、日、时、分、秒,在屏幕上模拟显示一电子计时器,不断输出下一秒的时间和日期,以及格林威治的日期和时间。
目录1 需求分析 (3)2 总体设计 (3)设计的总体思想与算法描述 (4)模块结构图 (5)用户查询主界面设计模块 (5)用户输入查询日历模块 (5)农历与公历日期信息转换模块 (6)相应日期节日信息显示模块 (7)查询主界面效果更换模块 (7)各模块的功能与处理流程描述 (8)用户查询主界面设计模块功能和处理流程 (8)用户输入查询日历模块 (9)公历和农历日期信息转换模块 (9)相应日期节日信息显示模块 (9)查询主界面效果更换模块 (10)界面设计 (10)万年历初始化界面 (10)特定的日期查询界面 (11)特定的日期节日显示界面(如春节、元宵节) (12)特定的农历和公历日期信息转换界面 (13)查询主界面换肤功能展示界面 (14)3 各功能模块程序设计 (16)查询主界面布局设计部分截取代码 (16)公历日期求解算法程序截取代码 (18)农历与公历转换算法程序截取代码 (21)节日求解算法程序实现截取代码 (26)4 小结 (28)5 参考文献 (29)题目:基于Java GUI 的万年历系统的设计与实现开发平台:eclipse1 需求分析本系统所描述的万年历系统主要是基于Java GUI 来实现的。
其主要功能是致力于为用户提供方便快捷、准确的日历时间信息,以便用户能够迅速地查找出自己所需的相关日历信息。
本万年历系统主要的功能和任务是任意选择一段时间内的某个年份月份进行查询,对相关的日历信息进行公历和农历的换算显示,显示相应日期的节日信息等。
功能描述:(1)日历查询实现:主要通过主界面顶端的两个下拉列表框来选择相应待查询的年份和月份以实现具体的月份的日历查询。
(2)公历和农历的时间换算:当把鼠标指针指向日历表里的某个具体日期数字上时,会自动显示相关的农历年份、月份、和生肖的相关信息。
(3)节日信息的显示:当某个日期为某个特定的节日时,相应的日期数字所在表格会显示该节日信息,包括了阳历和农历节日。
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类来格式化日期。
通过传入不同的格式化模式,我们可以获取所需的日期部分。
万年历程序简介万年历(Perpetual Calendar)是一个可以显示公历和农历的时间工具。
在这个文档中,我们将讨论如何编写一个简单的万年历程序,以及其实现原理和功能。
功能该万年历程序将具备以下功能:1.显示当前日期2.显示当前周数3.显示当前月份的日历4.显示指定年份和月份的日历实现原理为了实现万年历程序,我们需要使用一些基本的计算方法。
以下是一些相关的计算原理:判断某年是否是闰年判断某年是否是闰年可以使用以下公式:is_leap_year = (year % 4 == 0 and year % 100 ! = 0) or (year % 400 == 0)若上述公式的值为真,则表示该年份是闰年。
计算指定年份和月份的天数可以使用以下公式来计算指定年份和月份的天数:days_in_month = [31, # 1月28 + is_leap_year, # 2月31, # 3月30, # 4月31, # 5月30, # 6月31, # 7月31, # 8月30, # 9月31, # 10月30, # 11月31 # 12月]这样,我们就可以得到每个月份的天数。
判断某年某月的第一天是星期几我们可以使用Zeller’s Congruence算法来判断某年某月的第一天是星期几。
以下是该算法的公式:h = (day + 26*(month+1)//10 + k + k//4 + j//4 + 5*j) % 7其中,h是星期几(0代表星期六,1代表星期日,依次类推),day是月份的第一天的日期,month是月份(3代表三月,4代表四月,依次类推),k是该年的前两位数,j是该年的后两位数。
实现步骤以下是实现万年历程序的步骤:1.获取当前日期和时间2.使用相关公式判断当前年份是否是闰年3.显示当前日期和时间4.计算当前周数并显示5.获取当前月份的相关信息:年份、月份、天数、星期几6.显示当前月份的日历7.提供用户界面,允许用户输入指定的年份和月份8.使用相关算法计算指定年份和月份的日历9.显示指定年份和月份的日历示例代码以下是使用Python语言实现的一个简单的万年历程序:```python import datetime获取当前日期today = datetime.date.today() current_year = today.year current_month = today.month current_day = today.day判断当前年份是否是闰年is_leap_year = (current_year % 4 == 0 and current_year % 100 != 0) or (current_year % 400 == 0)显示当前日期和时间print(。
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();}}。
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);
else
b_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();
}
}。