• Math常用类、Date类、Calendar类、两者相互转换


    Math类:用于执行数学计算

    PI属性,获取圆周率

    random():获得一个0-1之间的随机浮点

    floor():向下取整

    ceile():向上取整

    round():四舍五入

    max():最大值

    min():最小值

    power():获得幂次方

    方法可直接在main方法中调用,因为源码写的是static

    没有static的修饰的称为实例方法,只有在实例化后才能调用

    static是常驻内存,又称为类方法,static只会用于常用类和变量,使用static修饰的数据直接通过“类名.方法名”进行调用,常驻内存的静态方法垃圾回收机制是不会对其进行删除的

    例子:

    public static void main(System[] args){
    //取最大值
    int max=Math.max(1,5);  //5
    //去最小值
    int min=Math.min(1,5);  //1
    //生成随机数0-1
    int n=Math.random();
    //生成0-9的随机数,对0.0001-9.9999的数进行取整,丢失精度后为0-9
    int n=(int)Math.random()*10;
    //生成1-6的随机数
    int n=((int)Math.random()*6)+1;
    //向下取整
    int n=Math.floor(10.5);  //10
    //向上取整
    int n=Math.ceil(10.5);  //11
    //四舍五入
    int n=Math.round(10.5);  //11
    //幂次方:第一个参数是底数,第二个数是幂数
    int n=Math.power(2,3);  //8
    //平方根
    int n=Math.sqrt(16);  //4
    }

    BigDecimal:保留几位小数点

     在java.math包中,使用要导包,用于封装处理所有的数值类数据并提供数据见的转换功能

    setScale(参数1,参数2)

      参数2的类型可填:

        ROUND_HALF_UP表示四舍五入
        ROUND_CEILLING表示向上取整
        ROUND_FLOOR表示向下取整

    BigDecimal 是类,能对数据处理,但是不能参与计算

    BigDecimal bd=new BigDecamal(10.1256);
    //能够转为任意类型
    int n1=bd.intValue();    //10
    double n2=bd.doubleValue();    //10.1256
    //对数据进行精度处理
    //参数1表示保留的浮点数,参数2表示精度保留的处理模式
    //ROUND_HALF_UP表示四舍五入
    //ROUND_CEILLING表示向上取整
    //ROUND_FLOOR表示向下取整
    bd=bd.setScale(2,BigDecimal.ROUND_HALF_UP);    //10.13

    Date类和Calendar类:

      1.两个类型都能描述日期和时间

      2.Date主要用于描述时间

      3.Calendar主要用于对日期进行访问操作

      4.两者可相互转换(通过毫秒值进行转换)

    public static void main(System[] args){
      //创建Date对象,就是获取当前系统时间
      Date date=new Date();
      //也可以通过毫秒值创建一个Date对象
      Date date=new Date(47285628364923);
      //print方法打印时,隐式调用对象的toString方法,所以打印的是对象地址:写不写toString得到的结果是一样的
      System.out.println(date.toString);
      System.out.println(date);
      //获取1970年至当前时间经历的毫秒值
      long dateTime=date.getTime();
    }

    打印日期的时候默认打印的是对象的地址

      改变格式打印两种方法:(也是将日期转为字符串的方法

        1.date.toLocalString();

        2.SimpleDateFormat类:可将日期按指定格式进行呈现

      创建类:SimpleDateFormat sdf=new SimpleDateFormat(String patten1);

      使用类:sdf.format(date);

      重新应用新的格式规则:sdf.applyPatten(String patten2);

      可以通过应用新格式的方式获取单独的时间单位:sdf.applyPatten("MM");

    //创建新的日期       
    Date date=new Date();
    //直接打印的是字符串:Wed Apr 29 17:15:56 CST 2020
    System.out.println(date);
    //改成系统默认的规则进行打印:2020-4-29 17:15:56 System.out.println(date.toLocaleString());
    //创建日期格式化类:使日期改成yyyy-MM-dd HH-mm-ss类型 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH-mm-ss"); //使用格式化类型 String strDate=sdf.format(date); //结果:2020-04-29 17-15-56 System.out.println(strDate);
    //创建应用新的格式 sdf.applyPattern("yyyy年MM月dd日"); //使用格式 String strDate2=sdf.format(date); //结果:2020年04月29日 System.out.println(strDate2);
    //获取单独的月份 sdf.applyPattern("MM"); //使用获取格式 String strDate3=sdf.format(date); //结果:04 System.out.println(strDate3);

    将字符串转为日期的方法:

    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd") ;
    //输入的日期字符串一定要和规定的类型一致才能转换
    String strDate="2020-4-29";
    try {
        //转换类型     Date date
    =sdf.parse(strDate);     System.out.println(date);   } catch (ParseException e) {     e.printStackTrace();   }

    Calendar:日历类

    创建日历类就是通过Calendar获取当前系统时间(通过静态方法获得实例):Calendar cal=Calendar.getInstance();

    默认打印出的cal是系统默认的字符串:

    java.util.GregorianCalendar[time=1588152735940,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2020,MONTH=3,WEEK_OF_YEAR=18,WEEK_OF_MONTH=5,DAY_OF_MONTH=29,DAY_OF_YEAR=120,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=5,AM_PM=1,HOUR=5,HOUR_OF_DAY=17,MINUTE=32,SECOND=15,MILLISECOND=940,ZONE_OFFSET=28800000,DST_OFFSET=0]

    如果需要按照给定的格式进行打印,则需要是Date格式,所以要转换格式:

    将Calendar转换为Date格式:

      方法一:获取1970年到现在的毫秒值,通过毫秒值封装成为Date类型

      方法二:用Date接收用SimpleDateFormat对日期进行格式化

    //创建日历类
    Calendar cal=Calendar.getInstance();
    //直接打印就是一长串字符串
    System.out.println(cal);

    /****************转换方式一********************/ //获取1970年到cal指定的日期的毫秒值 long timemillis=cal.getTimeInMillis(); //通过毫秒值封装一个Date类型 Date date=new Date(timemillis);
    /***************转换方式二*********************/ //用日期类接收日历类的时间 Date date1=cal.getTime(); //结果:Wed Apr 29 18:07:41 CST 2020 System.out.println(date1); //指定格式 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String strDate=sdf.format(date1); //结果:2020-04-29 18:11:01 System.out.println(strDate);

    获取时间单位:

    //创建日历类
    Calendar cal=Calendar.getInstance();
    //获取时间单位:参数是feild都可输入静态属性
    //获取年份
    int year=cal.get(Calendar.YEAR);
    //结果2020
    System.out.println(year);
    //获取月份
    int month=cal.get(Calendar.MONTH);
    //结果是3(不是4)
    System.out.println(month);
    //获得24小时
    int HH=cal.get(Calendar.HOUR_OF_DAY);
    //结果18
    System.out.println(HH);
    //获得12小时
    int hh=cal.get(Calendar.HOUR);
    //结果6
    System.out.println(hh);

    设置时间:

    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
    //创建日历类
    Calendar cal=Calendar.getInstance();
    //set(int feild,int value):单独修改年、月、日
    cal.set(Calendar.YEAR,2019);
    //将cal转换成Date类型
    Date date=cal.getTime();
    String strDate=sdf.format(date);
    //结果:2019-4-29
    System.out.println(strDate);
    
    //set(int year,int month,int day):同时修改年月日
    cal.set(2019,1,1);
    //将cal转换成Date类型
    Date date1=cal.getTime();
    String strDate1=sdf.format(date1);
    //结果2019-2-1(不是2019-1-1)
    System.out.println(strDate1);

    对时间进行计算更改:

    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    //创建日历类 Calendar cal=Calendar.getInstance(); //将原始cal转换成Date类型进行打印 Date date0=cal.getTime(); String strDate0=sdf.format(date0); //原始结果是:2020-04-29 18:41:16 System.out.println(strDate0); //修改天-7 cal.add(Calendar.DATE,-7); //将cal转换成Date类型进行打印 Date date=cal.getTime(); String strDate=sdf.format(date); //结果是:2020-04-22 18:41:16 System.out.println(strDate); //修改小时+3 cal.add(Calendar.HOUR,3); //将cal转换成Date类型进行打印 Date date1=cal.getTime(); String strDate1=sdf.format(date1); //结果是:2020-04-22 21:41:16 System.out.println(strDate1); //修改月份+10 cal.add(Calendar.MONTH,10); //将cal转换成Date类型进行打印 Date date2= cal.getTime(); String strDate2=sdf.format(date2); //结果是:2021-02-22 21:41:16 System.out.println(strDate2);

    对时间进行比较:

      方法一:通过      时间1.before(时间2)      进行比较

      方法二:通过      时间1.compareTo(时间2)     进行比较

    //创建时间1
    Calendar cal=Calendar.getInstance();
    cal.set(2020,3,5);
    //创建时间2
    Calendar cal2=Calendar.getInstance();
    if(cal.before(cal2)){
        System.out.println("第一个时间早于第二个时间");
    }
    else{
        System.out.println("第一个时间晚于第二个时间");
    }
    //创建时间1
    Calendar cal=Calendar.getInstance();
    cal.set(2020,3,5);
    //创建时间2
    Calendar cal2=Calendar.getInstance();
    //返回int值,1表示晚于参数,-1表示早于参数,0表示时间相同
    System.out.println(cal.compareTo(cal2));

    Calendar转换为Date:

    //创建日历类
    Calendar cal=Calendar.getInstance();
    //通过获取日历类的毫秒值封装成Date
    Date date=new Date(cal.getTimeInMillis());
    System.out.println(date);

    Date转换为Calendar:

    //创建日期类
    Date date=new Date();
    //创建日历类
    Calendar cal=Calendar.getInstance();
    //通过日期类设置日历类的值
    cal.setTime(date);
    System.out.println(cal);
  • 相关阅读:
    css区分ie6,7,ff
    轮播插件--可支持视频拖拽和可视区播放
    json无限树----几个月前写的插件
    WEBGL学习笔记二
    记录一些坑
    webGL学习笔记一
    Angular模态框
    Angular指令实践之type等于text的input星号输入
    Angular内置指令
    Angular指令一
  • 原文地址:https://www.cnblogs.com/gfl-1112/p/12801477.html
Copyright © 2020-2023  润新知