zoukankan      html  css  js  c++  java
  • java笔记 -- GregorianCalendar和DateFormateSymbols 类方法

    java.util.GregorianCalendar

    • new GregorianCalendar()

    构造一个日历对象, 用于表示默认地区,默认时区的当前时间.

    • new GregorianCalendar(int year, int month, int day),
    • new GregorianCalendar(int year, int month, int day, int hour, int minutes, int seconds)

    year:  该日期所在的年份
    month:  该日期所在的月份,以0位基准, 0表示1月.月份可以使用常量,例如:Calendar.DECEMBER
    day:  该月份中的日期
    hour:  小时(0到23之间)
    minutes:  分钟(0到59之间)
    seconds:  秒(0到59之间)

    • int get(int field) 返回给定域的值

    field参数:
      Calendar.ERA, Calendar.YEAR, Calendar.MONTH, Calendar.WEEK_OF_YEAR, Calendar.WEEK_OF_MONTH,
      Calendar.DAY_OF_YEAR, Calendar.DAY_OF_MONTH, Calendar.DAY_OF_WEEK, Calendar.DAY_OF_WEEK_IN_MONTH,
      Calendar.AM_PM, Calendar.HOUR, Calendar.HOUR_OF_DAY, Calendar.MINUTE, Calendar.SECOND,
      Calendar.MILLISECOND, Calendar.ZONE_OFFSET, Calendar.DST_OFFSET

    • void set(int field, int value) 设置特定域的值

    field参数:  参照get方法
    value:  新值

    • void set(int year, int month, int day),
    • void set(int year, int month, int day, int hour, int minutes, int seconds)

    将日期域与时间域设置为新值

    • void add(int field, int amount) 对给定的时间域增加指定数量的时间.可以为负数.

    field参数: 参照get方法
    amount: 域被改变的数量

    • int getFirstDayOfWeek

    方法获取当前地区星期的起始日期(美国的星期第一天是Calendar.SUNDAY, 欧洲每个星期的第一天是星期一, 最后一天是星期日).

    • void setTime(Date time)

    将日历设置为指定时间点

    • void getTime()

    获得这个日历对象当前值所表达的时间点.

    java.text.DateFormateSymbols

    • String[] getShortWeekdays()
    • String[] getShortMonths()
    • String[] getWeekdays()
    • String[] getMonths()

    获取当前地区的星期几或月份的名称(数组).利用Calendar的星期和月份常量作为数组的索引值.

    // CalendarTest .java
    
    public class CalendarTest {
        public static void main(String[] args) {
            // 构造一个当前日期对象
            GregorianCalendar d = new GregorianCalendar();
            int today = d.get(Calendar.DAY_OF_MONTH);
            int month = d.get(Calendar.MONTH);
    //        System.out.println("today: " + today);
    //        System.out.println("month: " + month); 
            
            // 设置时间为本月开始日期
            d.set(Calendar.DAY_OF_MONTH, 1);
            
            // 本月第一天是星期几, 2018/09, 此weekday为7,周六
            int weekday = d.get(Calendar.DAY_OF_WEEK);
    //        System.out.println("weekday: " + weekday);
            
            // 得到当地星期的起始日
            int firstDayOfWeek = d.getFirstDayOfWeek(); // 1是周日??
    //        System.out.println("firstDayOfWeek: " + firstDayOfWeek);
            
            int indent = 0;
            while (weekday != firstDayOfWeek) {
                indent++;
                // 将日期对象减1, 直到一个星期的第一天为止
                d.add(Calendar.DAY_OF_MONTH, -1);
                weekday = d.get(Calendar.DAY_OF_WEEK);
    //            System.out.println("weekday"+ indent + ": " + weekday);
            }
            
            String[] weekdayNames = new DateFormatSymbols().getShortWeekdays();
    //        System.out.println("weekdayNames: " + Arrays.toString(weekdayNames));
                // weekdayNames: [, 星期日, 星期一, 星期二, 星期三, 星期四, 星期五, 星期六]
            do {
                System.out.printf("%4s", weekdayNames[weekday]); // 在weekdayNames数组中取值.
                d.add(Calendar.DAY_OF_MONTH, 1);
                weekday = d.get(Calendar.DAY_OF_WEEK);
            }
            while (weekday != firstDayOfWeek); // 满足此条件就继续.
            System.out.println();
            for (int i = 1; i<= indent; i++)
                System.out.print("    "); // 打印缩进位置
            d.set(Calendar.DAY_OF_MONTH, 1);
            do {
                // 开始打印日期
                int day = d.get(Calendar.DAY_OF_MONTH);
                System.out.printf("%3d", day);
                
                // 当前日期后面打印*
                if (day == today) System.out.print("*");
                else System.out.print(" ");
                
                // 打印日期, 每到一个当地星期其实日, 则换行
                d.add(Calendar.DAY_OF_MONTH, 1);
                weekday = d.get(Calendar.DAY_OF_WEEK);
                
                // 此处容易混的是: 上面已经先打印出了符合周六的日期, 然后+1天,判断相等之后才会进入下一个循环继续打印周日(起始日),所以是没有问题的. 
                if (weekday == firstDayOfWeek) System.out.println();
            }
            while (d.get(Calendar.MONTH) == month);
            // 打印尾行线(如果需要)
            if (weekday !=firstDayOfWeek) System.out.println();
        }
    }
  • 相关阅读:
    vi 命令 使用方法
    再论C++之垃圾回收(GC)
    Iterative (non-recursive) Quick Sort
    DirectSound的应用
    JavaScript也能求爱哦
    lol匹配算法
    一年成为Emacs高手(像神一样使用编辑器)
    SSH深度历险(四) Maven初步学�
    char* 和char[]的差别
    数据仓库与数据挖掘的一些基本概念
  • 原文地址:https://www.cnblogs.com/qiezuimh/p/9712035.html
Copyright © 2011-2022 走看看