/*
* 打印万年历:1.判断当前月有多少天;2.判断第一天星期几;
*/
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import javax.swing.JOptionPane;
public class TestCalendar03 {
public void test2() throws IOException, ParseException {
// 从控制台获取数据
// System.out.println("请输入时间:");
String strDate = JOptionPane.showInputDialog(null, "请输入时间(格式:yyyy-mm):",
"指定时间的日历",JOptionPane.INFORMATION_MESSAGE);
// 定义字符转日期的转换器
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
// 定义日期
Date date = sdf.parse(strDate);
// 获取关于指定日期的相关信息
Calendar cal = new GregorianCalendar();
cal.setTime(date);
System.out.println(strDate);
// DAY_OF_MONTH是获得当前时间点所在月的第几号
int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
// 获取当月的最大天数
int maxDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
// 获取当星期的第几天
int week = cal.get(Calendar.DAY_OF_WEEK);
System.out.println("dayofmonth:" + dayOfMonth + "\n" + "maxday:"
+ maxDay + "\n" + "dayofweek:" + week);
String[] s = { "日", "一", "二", "三", "四", "五", "六" };
for (int i = 0; i < s.length; i++) {
System.out.print(s[i] + "\t");
}
// 定义一个集合 存放 占位符和天数
List<String> temp = new ArrayList<String>();
for (int i = 1; i < week; i++) { // 添加占位空格
temp.add(" ");
}
for (int i = 1; i <= maxDay; i++) { // 添加天数
// temp.add(String.valueOf(i)); //第一种转字符串方法
temp.add(i + " "); // 第二种,加个字符串,自动转
}
// 打印日期
for (int i = 0; i < temp.size(); i++) {
if (i % 7 == 0) {
System.out.println();
}
System.out.print(temp.get(i) + "\t");
}
}
public static void main(String[] args) throws IOException, ParseException {
TestCalendar03 tc = new TestCalendar03();
tc.test2();
}
}
//第二种方法
public void getCalender(){
try {
System.out.println("请输入时间:(yyyy-mm)");
String strDate = new BufferedReader(new InputStreamReader(System.in)).readLine();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
//定义日期
Date date = sdf.parse(strDate);
//获取关于指定日期的相关信息
Calendar cal = new GregorianCalendar();
cal.setTime(date);
System.out.println("日\t一\t二\t三\t四\t五\t六");
for (int i = 0; i < cal.get(Calendar.DAY_OF_WEEK)-1; i++) {
System.out.print("\t");
}
for (int i = 1; i <= cal.getActualMaximum(Calendar.DAY_OF_MONTH); i++) {
cal.set(Calendar.DATE, i);
if(cal.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY){
System.out.println(i+"\t");
}else
System.out.print(i+"\t");
}
} catch (IOException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
}
分享到:
相关推荐
10.javaDate类.zip10.javaDate类.zip10.javaDate类.zip10.javaDate类.zip10.javaDate类.zip10.javaDate类.zip10.javaDate类.zip10.javaDate类.zip10.javaDate类.zip10.javaDate类.zip10.javaDate类.zip10.javaDate类...
1. **规范化问题**:当使用`java.sql.Date`时需要注意,它的日期部分是规范化的,即只包含日期而没有时间。这意味着任何传递给它的非规范化的时间信息(如小时、分钟等)将会被清除。 2. **日期格式的匹配**:在...
我们可以获取本月的第一天,然后加上一个月的天数,得到下个月的第一天。接着,我们可以通过`TemporalAdjusters.previousOrSame(DayOfWeek)`找到下月第一天的前一个周日,这就是本月的最后一个完整周的开始。再计算...
- **一月、三月、五月、七月、八月、十月**:这些月份有31天,如果日期为31,则返回下个月的第一天;否则日期加一。 ### 日期合法性检查功能解析 为了确保输入的日期合法,程序还包含了`legal()`函数,该函数用于...
1. `Dates`表:存储公历日期及其对应的星期、农历日期等信息。 2. `Lunar`表:记录农历日期,包括月、日、闰月等细节。 3. `Festivals`表:存储各种节日和纪念日的信息,包括名称、日期和类型(如法定假日、传统节日...
1. **表示当前时间**:Date类有一个无参构造函数,创建的实例代表当前系统时间。例如`new Date()`,打印出来会显示具体的日期和时间,格式如"Sun Mar 08 16:35:58 CST 2009",其中CST表示中国标准时间。 2. **表示...
对于每个月的天数,非闰年的2月有28天,其他月份根据奇偶性分30天或31天。闰年的2月则有29天。可以创建一个数组来存储这些信息: ```c int days_in_month[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; /...
1. Java时间处理:在Android中,Date和Calendar类是处理日期的基础,源码可能涉及日期的增减、比较、格式化等操作。 2. 闰年判断:万年历需准确识别闰年,通过计算年份能否被400整除或能被4整除但不能被100整除的...
1. 将Java.util.Date转换为Java.sql.Date Java.sql.Date sd; Java.util.Date ud; // initialize the ud such as ud = new Java.util.Date(); sd = new Java.sql.Date(ud.getTime()); 2. 若要插入到数据库并且相应...
下面是对 Date 类的学习总结,包括计算某一月份的最大天数、Calendar 和 Date 的转化、把字符串转化为 java.util.Date、把字符串转化为 java.sql.Date、格式化输出日期时间、计算一年中的第几星期等。 计算某一月份...
1. **使用 getTime() 函数** `java.util.Date` 和 `java.sql.Date` 都提供了 `getTime()` 方法,该方法返回表示该日期的毫秒数。通过这种方法,可以方便地实现两种日期类型的转换: ```java // java.sql.Date ...
2. **循环与条件判断**:在生成日历时,需要遍历每个月的每一天,并判断是否为周末、节假日等特殊日期。这需要用到For...Next或Do...Loop等循环结构,以及If...Then...Else条件语句。 3. **HTML输出**:ASP可以动态...
2. 计算该月有多少天(`getDate()`可能不够,需要特别处理闰年和不同月份的情况)。 3. 创建HTML结构,填充星期和日期。 4. 添加特殊日期的处理,比如标记节假日或生日。 为了支持万年历功能,我们需要提供用户选择...
打印当前时间.通过代码运行后,自动获取获取当前个人微型计算机的当前时间日期。
1. **创建Date对象**:创建`Date`对象通常有两种方式,一种是通过`new Date()`构造器,它会返回当前系统时间的日期和时间;另一种是通过`Date(System.currentTimeMillis())`,这里的`System.currentTimeMillis()`...