zoukankan      html  css  js  c++  java
  • 常用类——Date——Calendar


    日期处理:
    java.util.Date: 类 Date 表示特定的日期和时间,精确到毫秒。
      三个子类
        java.sql.Date
        java.sql.Time
        java.sql.Timestamp
      常用构造函数:
        Date():获取当前日期
        Date(int year,int month,int date): 获取指定日期
        year - 减 1900 的年份。
        month - 0-11 的月份。
        date - 一月中 1-31 之间的某一天
      常用的方法:
        过时的方法:在方法上带的有一个删除线
        getYear():减 1900 的年份
        getMonth():获取月份,范围0~11
        getDate():获取日期
        getHours():获取当前日期的小时数
        getMinutes():获取当前日期的分钟数
        getSeconds():获取当前日期的秒数:
        toLocaleString():以与实现相关的方式创建此 Date 对象的字符串表示形式
        before(Date when):测试此日期是否在指定日期之前。
        after(Date when): 测试此日期是否在指定日期之后。
        .....
    格式化输入日期:DateFormat和SimpleDateFormat ***
    java.text.DateFormat:抽象类
      --java.text.SimpleDateFormat:DateFormat的子类
      常用的构造函数:
        SimpleDateFormat(String pattern)
        pattern:
          yyyy:年份 MM:月份 dd:日期 HH:小时(24进制) hh(12进制):小时 mm:分钟 ss:秒
      常用方法:
        format(Date d):将指定的日期格式化字符串
        parse(String s):将字符串转换(解析)为日期,会一个检查异常ParseException需要捕获

    public class TestDate {
        public static void main(String[] args) {
            //获取当前时间:距1970-1-1 00:00:00 的总毫秒数
    //        long now = System.currentTimeMillis();
    //        long days = now/1000/3600/24;
    //        System.out.println("距1970年1月1日的总天数:"+days);
    //        //获取当前时间
    //        Date date = new Date();
    //        System.out.println(date.toString());
    //        //过时的方法:在方法上有一个删除线
    //        System.out.println(date.toLocaleString());
            /*
            year - 减 1900 的年份。
            month - 0-11 的月份。
            date - 一月中 1-31 之间的某一天
            */
    //        Date date2 = new Date(116,3,17);
    //        System.out.println(date2.toLocaleString());
            //过时的方法:getXxx():获取日期中指定的xx部分
    //        int year = date.getYear();
    //        System.out.println(year);//距1900年的总年数
    //        int month = date.getMonth();//0~11之间,0代表1月
    //        System.out.println(month);//
    //        int day = date.getDate();//日期
    //        System.out.println(day);
    //        int hour = date.getHours();//小时
    //        System.out.println(hour);
    //        int min = date.getMinutes();
    //        System.out.println(min);
    //        int sec=date.getSeconds();
    //        System.out.println(sec);
    //        //测试此日期是否在指定日期之前
    //        System.out.println(date.before(date2));
    //        //测试此日期是否在指定日期之后
    //        System.out.println(date.after(date2));
            
            //将日期转换为字符串
            Date nowDate = new Date();
            DateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd hh时mm分ss秒");
            String str = dateFormat.format(nowDate);
            System.out.println(str);
            //将字符串转换为日期
            String str2="2017-4-17";
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            try {
                Date nowDate2 = sdf.parse(str2);//checked异常,必须进行捕获
                System.out.println(nowDate2);
            } catch (ParseException e) {
                e.printStackTrace();
            }
            
        }
    }


    java.util.Calendar:抽象类
      --java.util.GregorianCalendar:是Calendar的子类
      如何获取实例
        1.Calendar calendar = new GregorianCalendar();
        2.Calendar calendar = Calendar.getIntance();
      常用的方法:
        get(field):获取日期的指定部分:get(int field)返回给定日历字段的值。
        field: Calendar.YEAR
           Calendar.MONTH
           Calendar.DATE
           Calendar.HOUR
           Calendar.MINUTE
           Calendar.SECOND
           Calendar.DAY_OF_YEAR
           Calendar.DAY_OF_MONTH
           Calendar.DAY_OF_WEEK ***
        set(field,value):将日历字段 field 更改为 value
        getActualMaximum(int field):给定此 Calendar 的时间值,返回指定日历字段可能拥有的最大值
        add(int field, int amount)根据日历的规则,为给定的日历字段添加或减去指定的时间量
        setTime(Date date):使用给定的 Date 设置此 Calendar 的时间

    public class TestCalendar {
        public static void main(String[] args) {
    //        Calendar calendar = new GregorianCalendar();
            Calendar calendar = Calendar.getInstance();//创建实例 
    //        System.out.println(calendar.toString());
            //获取日期的指定部分:get(int field)返回给定日历字段的值。
            int year = calendar.get(Calendar.YEAR);
            int month = calendar.get(Calendar.MONTH);//0~11
            int date = calendar.get(Calendar.DATE);
            int hour = calendar.get(Calendar.HOUR);
            int min = calendar.get(Calendar.MINUTE);
            int sec = calendar.get(Calendar.SECOND);
            System.out.println(year+"-"+(month+1)+"-"+date+" "+hour+":"+min+":"+sec);
            //获取当前日期是一年中的第多少天
            int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR);//一年的第N天
            int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);//一月的第N天
            //查看今天是星期几?
            int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);//一周的第N天(周日为第1天)
            System.out.println(dayOfYear+"-----"+dayOfMonth+"----"+dayOfWeek);
            //查看当月1号是一星期的第几天?
            //1.查看2016-4-17是一星期的第几天?
            calendar.set(Calendar.YEAR, 2016);
            calendar.set(Calendar.MONTH, 3);//0~11
            calendar.set(Calendar.DATE, 17);
    //        System.out.println(calendar);
            int oldDayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
            System.out.println("2016-4-17是一星期的第"+oldDayOfWeek+"天");
            //查看当前日期所在月份是1号是一周的第几天?
            Calendar calendar2 = Calendar.getInstance();
            calendar2.set(Calendar.DATE, 1);//2017-4-1
            calendar2.add(Calendar.MONTH, 3);//2017-7-1
            int dayOfWeek2 = calendar2.get(Calendar.DAY_OF_WEEK);
            System.out.println(dayOfWeek2);
            //获取当前月份最大的天数
            int max = calendar2.getActualMaximum(Calendar.DAY_OF_MONTH);
            System.out.println(max);
        }
    }

    可视化日历
    Calendar
     可以判断这个月一共多少天calendar2.getActualMaximum(Calendar.DAY_OF_MONTH);
    判断某一天是星期几
    1.实现思路
      1.按照提示输入任何一个日期
     2.打印日历  

     1.打印日历头:日 一 二 三 四 五 六
      2.打印1日之前的空格(循环)
      3.打印每一天(循环),周六换行
    2.涉及技能点
      1.字符串转换成Date(DateFormat)
        DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date = sdf.parse(sdate);
      2.Date转换成Calendar
        cal.setTime(sdate);
      3.获取当前输入的日期的日期部分:
        把1999-12-23修改为1999-12-1
          cal.set(Calendar.DATE,1);
      4.判断1999-12-1是星期几
        cal.get(Calendar.DAY_OF_WEEK)
      5.获取当前月的最大天数
        cal.getActualMaximum(Calendar.DATE)
      6.如何判断每天是不是星期六,如果是周六,换行
        cal.get(Calendar.DAY_OF_WEEK)==7
        cal.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY
      7.判断是不是当天,如果是,打印*
        cal.get(Calendar.DATE) *
      8.如何日期增加1天
        cal.add(Calendar.DATE, 1);

    public class TestVisualCalendar {
        public static void main(String[] args) {
            //1.获取用户输入的日期
            System.out.println("请输入日期(2017-1-1)");
            Scanner input = new Scanner(System.in);
            String dateStr = input.nextLine();
            //2.将日期字符串转为日期
            DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
            try {
                Date date = dateFormat.parse(dateStr);//shift+alt+z
                Calendar calendar = Calendar.getInstance();//获取Calendar对象(实例)
                calendar.setTime(date);//将输入的日期转为Calendar对象
                //3.获取当前日期部分
                int day = calendar.get(Calendar.DATE);
                //将当前日期设置成当月月份的第一天
                calendar.set(Calendar.DATE, 1);
                //4.判断输入日期的月份的第一天是星期几
                int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
                //5.获取当前月份的最大天数
                int maxDays = calendar.getActualMaximum(Calendar.DATE);
                //6.打印日历头信息
                System.out.println("日	一	二	三	四	五	六");
                //7.打印1日之前的空格(关键是知道1日时星期几)
                for(int i=1;i<dayOfWeek;i++){
                    System.out.print('	');
                }    
                for(int i=1;i<=maxDays;i++){
                    System.out.print(i+"	");
                    if(day==i){
                        System.out.print("*");
                    }
                    int w = calendar.get(Calendar.DAY_OF_WEEK);
                    if(w==Calendar.SATURDAY){
                        System.out.println();//当前日期如果是周六的话需要换行
                    }
                    calendar.add(Calendar.DATE, 1);
                }
            } catch (ParseException e) {
                e.printStackTrace();
            }
            
        }
    
    }
  • 相关阅读:
    IOS开发博客学习网址
    xmpp学习xmpp概述
    java数据库编程之高级查询
    html基础知识笔记
    深入c#编程
    c#入门基础笔记
    java数据库编程之数据库的设计
    小组会谈(2019.3.14)
    软件工程小组问世第四章之需求规格说明书青铜篇
    小组会谈(2019.03.29)
  • 原文地址:https://www.cnblogs.com/fwdsz/p/6753536.html
Copyright © 2011-2022 走看看