美文网首页
Calendar类的一些辅助功能和API

Calendar类的一些辅助功能和API

作者: 红茶炒饭 | 来源:发表于2019-01-22 19:59 被阅读0次

    API

     //获得Calendar这个类的实例:
            Calendar c = Calendar.getInstance();
    
     String TAG = "我来看看";
    
            Calendar c = Calendar.getInstance();
    
            //获得当前的年份
            int year = c.get(Calendar.YEAR);
            Log.e(TAG, "年份:"+year);
            //获得当前的月份 //注意:  1 月份的值为0,需加1为现实中月份
            int month = c.get((Calendar.MONTH)) + 1;
            Log.e(TAG, "月份:"+month);
    
    
            //获得今天是本月的第几天,两种写法
            int date = c.get(Calendar.DATE);
            int day = c.get(Calendar.DAY_OF_MONTH);
            Log.e(TAG, "date:"+date);
            Log.e(TAG, "day:"+day);
    
    
            //获得今天是本年的第几天
            int num = c.get(Calendar.DAY_OF_YEAR);
            Log.e(TAG, "获得今天是本年的第几天: "+num );
    
            //获得今天在本月的第几周
            int i1 = c.get(Calendar.DAY_OF_WEEK_IN_MONTH);
            Log.e(TAG, "获得今天在本月的第几周: "+i1 );
    
    
            //获得今天是周几
            int i2 = c.get(Calendar.DAY_OF_WEEK)-1;
            Log.e(TAG, "获得今天是周几: "+i2 );
    
    
            //获得几点,12小时制
            int i3 = c.get(Calendar.HOUR);
            Log.e(TAG, "获得几点,12小时制: "+i3 );
    
    
            //需要区分是上午还是下午
            int i = c.get(Calendar.AM_PM);
            Log.e(TAG, "需要区分是上午还是下午: "+i );
    
    
            //上午
            int am = Calendar.AM;
            Log.e(TAG, "上午: "+am);
    
            //下午
            int pm = Calendar.PM;
            Log.e(TAG, "下午: "+pm);
    
    
            //获取24小时制时间的方法
            int i4 = c.get(Calendar.HOUR_OF_DAY);
            Log.e(TAG, "获取24小时制时间的方法: "+i4 );
    
    
            //获得现在是几分
            int i5 = c.get(Calendar.MINUTE);
            Log.e(TAG, "获得现在是几分: "+i5);
    
    
            //一下add方法的设定会影响最终的输出结果  如果不重置将会一直存续下去 用这个方法我们可以切换 地域 或者是定时
            // 10分钟以后
            c.add(Calendar.MINUTE, 10);
            int i15 = c.get(Calendar.MINUTE);
            Log.e(TAG, "10分钟以后: "+i15);
    
            // 30分钟前
            c.add(Calendar.MINUTE, -30);
            Log.e(TAG, "30分钟前: "+i15);
    
    
            // 设定1小时以后,前者大,显示 1
            c.add(Calendar.HOUR, +1);
    
            // 退回 2 小时,时间相同,显示 0
            c.add(Calendar.HOUR, -2);
    
            //增加日期中的某个域的值,比如想获得明天的日期,就需要向DAY域加1
            c.add(Calendar.DAY_OF_MONTH, +1);
    
            // 重置 Calendar 显示当前时间
            c.setTime(new Date());
    
    
            //获得现在是几秒
            int i6 = c.get(Calendar.SECOND);
            Log.e(TAG, "获得现在是几秒: "+i6);
    
            //获得现在是几毫秒
            int i7 = c.get(Calendar.MILLISECOND);
            Log.e(TAG, "获得现在是几毫秒: "+i7 );
    
    
            //SimpleDateFormat来输出规范的字符串
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy:MM:dd");
            String format = sdf.format(c.getTime());
            Log.e(TAG, "格式化输出: "+format );
    
    
            SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            String format1 = sdf2.format(c.getTime());
            Log.e(TAG, "格式化输出: "+format1 );
    
            SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒SSS毫秒");
            String format2 = sdf3.format(c.getTime());
            Log.e(TAG, "格式化输出: "+format2);
    
    
            String str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(new Date());
            Log.e(TAG, "完整显示今天时间: "+str );
    
    
    
            // 重置 Calendar 显示当前时间
            c.setTime(new Date());
            str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(c.getTime());
    
    
            //比较时间
            Calendar c2 = Calendar.getInstance();
            Calendar d2 = Calendar.getInstance();
            d2.add(Calendar.DAY_OF_MONTH, 1);
            //比较两个日期哪个更靠后
            boolean after = d2.after(c2);
            //比较两个日期哪个更靠前
            boolean before = c2.before(d2);
            Log.e(TAG, "比较两个日期哪个更靠后: "+after );
            Log.e(TAG, "比较两个日期哪个更靠前: "+before );
    
    
            //要求两个参与比较的字符串的形式及长度必须相同才能够正确比较,否则,比较结果是错的.
            String a="2019-10-12";
            String b="2019-10-21";
            int result=a.compareTo(b);
            int result2=b.compareTo(a);
            //1 比目标大   -1比 目标小   0相等
            Log.e(TAG, "String中方法compareTo: "+result +"and"+result2);
    
    
    
            SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            try {
                Date parse = sdf4.parse("2019-05-31 12:36:44");
                Date parse1 = sdf4.parse("2019-05-31 12:36:55");
                Log.e(TAG, "data比大小: "+(parse.getTime() > parse1.getTime() ));
            } catch (ParseException e) {
                e.printStackTrace();
            }
    
            String f = sdf2.format("2019-05-31 12:36:44");
    
    
            //比较两个日期是否相等
            Calendar c1 = Calendar.getInstance();
            Calendar d1 = Calendar.getInstance();
            c1.equals(d1);        //true
            c1.add(Calendar.YEAR, 1);
            c1.equals(d1);        //false
    
    
    
    
    
    
            //清空某一个域并用这个域最小的值代替
            c.clear(Calendar.MONTH);
            //清空所有的域然后全部用最小的值代替
            //1970.1.1 00.00
            c.clear();
    
            //获得Calendar对象的一个深拷贝,独立于拷贝对象
            c = (Calendar) c.clone();
            sdf.format(c.getTime());
    
            //比较两个Calendar哪个在前哪个在后的方法
            //c实例要靠前一些,返回-1,如果要靠后一些,返回1,如果相等,返回0
            c = (Calendar) c.clone();
            c.compareTo(c);
    
    
    
    时间.png

    拓展:一个简单的运用 防止连点

    这个工具类

    
        public abstract class NoDoubleClickListener implements View.OnClickListener {
    
        private final  long lastClickTime=0;   //最后一次点击事件的时间
        public  final int MIN_CLICK_DELAY_TIME=1500; //单位毫秒
    
        public abstract void onNoDoubleClick(View view);    //创建一个抽象方法 用来再次回调事件
    
        @Override
        public void onClick(View v) {
    
            Calendar c = Calendar.getInstance();//实例化
            long currentTime=   c.getTimeInMillis();
            /*
             c.getTimeInMillis();  
             返回了一个long 类型的值
             格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000到Calendar对象表示的时间之间的毫秒数
             除以  1000/60/60/24/365   获取年数 ~
            */
            if (currentTime - lastClickTime >= MIN_CLICK_DELAY_TIME) {
                lastClickTime=currentTime;
                onNoDoubleClick(v);
            }
        }
    
    }
    
    

    具体的效果如图

    当快速点击时 时间戳 小于1500 所以不会触发if条件

    相关文章

      网友评论

          本文标题:Calendar类的一些辅助功能和API

          本文链接:https://www.haomeiwen.com/subject/yzmrjqtx.html