Java日历类
发布日期:2021-05-07 14:41:08 浏览次数:18 分类:原创文章

本文共 4662 字,大约阅读时间需要 15 分钟。

目录


1 Calendar类(应用)

Calendar类概述

Calendar 为特定瞬间与一组日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法

Calendar 提供了一个类方法 getInstance 用于获取这种类型的一般有用的对象。

该方法返回一个Calendar 对象。

其日历字段已使用当前日期和时间初始化:Calendar rightNow = Calendar.getInstance();

Calendar类常用方法

2 注意

      注意月份的表示,一月是0,二月是1,以此类推,12月是11。 因为大多数人习惯于使用单词而不是使用数字来表示月份,这样程序也许更易读,父类Calendar使用常量来表示月份:JANUARY、FEBRUARY等等。

3 GregorianCalendar类和Calendar类的使用

import java.util.*;public class TestCalendar {    public static void main(String[] args) {        // 得到相关日期元素        GregorianCalendar calendar = new GregorianCalendar(2999, 10, 9, 22, 10, 50);        int year = calendar.get(Calendar.YEAR); // 打印:1999        int month = calendar.get(Calendar.MONTH); // 打印:10        int day = calendar.get(Calendar.DAY_OF_MONTH); // 打印:9        int day2 = calendar.get(Calendar.DATE); // 打印:9        // 日:Calendar.DATE和Calendar.DAY_OF_MONTH同义        int date = calendar.get(Calendar.DAY_OF_WEEK); // 打印:3        // 星期几 这里是:1-7.周日是1,周一是2,。。。周六是7        System.out.println(year);        System.out.println(month);        System.out.println(day);        System.out.println(day2);        System.out.println(date);        // 设置日期        GregorianCalendar calendar2 = new GregorianCalendar();        calendar2.set(Calendar.YEAR, 2999);        calendar2.set(Calendar.MONTH, Calendar.FEBRUARY); // 月份数:0-11        calendar2.set(Calendar.DATE, 3);        calendar2.set(Calendar.HOUR_OF_DAY, 10);        calendar2.set(Calendar.MINUTE, 20);        calendar2.set(Calendar.SECOND, 23);        printCalendar(calendar2);        // 日期计算        GregorianCalendar calendar3 = new GregorianCalendar(2999, 10, 9, 22, 10, 50);        calendar3.add(Calendar.MONTH, -7); // 月份减7        calendar3.add(Calendar.DATE, 7); // 增加7天        printCalendar(calendar3);        // 日历对象和时间对象转化        Date d = calendar3.getTime();        GregorianCalendar calendar4 = new GregorianCalendar();        calendar4.setTime(new Date());        long g = System.currentTimeMillis();    }    static void printCalendar(Calendar calendar) {        int year = calendar.get(Calendar.YEAR);        int month = calendar.get(Calendar.MONTH) + 1;        int day = calendar.get(Calendar.DAY_OF_MONTH);        int date = calendar.get(Calendar.DAY_OF_WEEK) - 1; // 星期几        String week = "" + ((date == 0) ? "日" : date);        int hour = calendar.get(Calendar.HOUR);        int minute = calendar.get(Calendar.MINUTE);        int second = calendar.get(Calendar.SECOND);        System.out.printf("%d年%d月%d日,星期%s %d:%d:%d\n", year, month, day,                          week, hour, minute, second);    }}

执行结果如图所示:

      编写程序,利用GregorianCalendar类,打印当前月份的日历,今天的日期是 2017-05-18 ,如图8-19所示为今日所在月份的日历:

4 可视化日历的编写

import java.text.ParseException;import java.util.Calendar;import java.util.GregorianCalendar;import java.util.Scanner;public class TestCalendar2 {    public static void main(String[] args) throws ParseException {        System.out.println("请输入日期(格式为:2010-3-3):");        Scanner scanner = new Scanner(System.in);        String dateString = scanner.nextLine(); // 2010-3-1        // 将输入的字符串转化成日期类        System.out.println("您刚刚输入的日期是:" + dateString);        String[] str = dateString.split("-");        int year = Integer.parseInt(str[0]);        int month = new Integer(str[1]);        int day = new Integer(str[2]);        Calendar c = new GregorianCalendar(year, month - 1, day); // Month:0-11        // 大家自己补充另一种方式:将字符串通过SImpleDateFormat转化成Date对象,        //再将Date对象转化成日期类        // SimpleDateFormat sdfDateFormat = new SimpleDateFormat("yyyy-MM-dd");        // Date date = sdfDateFormat.parse(dateString);        // Calendar c = new GregorianCalendar();        // c.setTime(date);        // int day = c.get(Calendar.DATE);        c.set(Calendar.DATE, 1);        int dow = c.get(Calendar.DAY_OF_WEEK); // week:1-7 日一二三四五六        System.out.println("日\t一\t二\t三\t四\t五\t六");        for (int i = 0; i < dow - 1; i++) {            System.out.print("\t");        }        int maxDate = c.getActualMaximum(Calendar.DATE);        // System.out.println("maxDate:"+maxDate);        for (int i = 1; i <= maxDate; i++) {            StringBuilder sBuilder = new StringBuilder();            if (c.get(Calendar.DATE) == day) {                sBuilder.append(c.get(Calendar.DATE) + "*\t");            } else {                sBuilder.append(c.get(Calendar.DATE) + "\t");            }            System.out.print(sBuilder);            // System.out.print(c.get(Calendar.DATE)+            //                ((c.get(Calendar.DATE)==day)?"*":"")+"\t");             if (c.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY) {                System.out.print("\n");            }            c.add(Calendar.DATE, 1);        }    }}

运行效果: 

上一篇:Java常用的Math类
下一篇:Java时间类

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2025年04月02日 17时19分22秒