java常用类-BigDecimal、Date、Calendar、SimpleDateFormat

BigDecimal

  • 位置:java.math包中。
  • 作用:精确计算浮点数。
  • 创建方式:BigDecimal bd=new BigDecimal(“1.0”)
import java.math.BigDecimal;

public class Demo07 {
    public static void main(String[] args) {
        double d1=1.0;
        double d2=0.9;
        System.out.println(d1-d2);

        //面试题
        double result = (1.4-0.5)/0.9;
        System.out.println(result);

        System.out.println("====================BigDecimal====================");
        //BigDecimal,大的浮点数精确计算
        BigDecimal bd1 = new BigDecimal("1.0");
        BigDecimal bd2 = new BigDecimal("0.9");
        //减法
        BigDecimal r1 = bd1.subtract(bd2);
        System.out.println(r1);
        //加法
        BigDecimal r2 = bd1.add(bd2);
        System.out.println(r2);
        //乘法
        BigDecimal r3 = bd1.multiply(bd2);
        System.out.println(r3);
        //除法
        BigDecimal r4 = new BigDecimal("1.4")
                .subtract(new BigDecimal("0.5"))
                .divide(new BigDecimal("0.9"));
        System.out.println(r4);
        //四舍五入
        BigDecimal r5 = new BigDecimal("10")
                .divide(new BigDecimal("3"),2,BigDecimal.ROUND_HALF_UP);
        System.out.println(r5);
    }
}

 Date

  • Date表示特定的瞬间,精确到毫秒。Date类中的大部分方法都已经被Calendar类中的方法所取代。
  • 时间单位:
    • 1秒=1000毫秒。
    • 1毫秒=1000微秒。
    • 1微秒=1000纳秒
import java.util.Date;

public class Demo01 {
    public static void main(String[] args) {
        //创建date对象
        //今天
        Date date = new Date();
        System.out.println(date.toString());
        System.out.println(date.toLocaleString());
        //昨天
        Date date1 = new Date(date.getTime() - (1000 * 60 * 60 * 24));
        System.out.println(date1.toLocaleString());
        //after before方法
        System.out.println(date.after(date1));
        System.out.println(date.before(date1));

        //比较compareTo
        System.out.println(date.compareTo(date1));
        System.out.println(date1.compareTo(date));
        System.out.println(date.compareTo(date));

        //比较是否相等equals();
        boolean equals = date.equals(date1);
        System.out.println(equals);
    }
}

Calendar

  • Calendar提供了获取或设置各种日历字段的方法。
  • 构造方法
    •  protected Calendar() :由于修饰符是protected,所以无法直接创建该对象。
  • 其他方法
方法名 说明
static Calendar getInstance() 使用默认时区和区域获取日历
void set(int year,int month,int date,int hourofday,int minute,int second) 设置日历的年、月、日、时、分、秒
int get(int field) 返回给定日历的字段值。比如年、月、日等
void setTime(Date date) 使用给定的Date设置此日历的时间。Date-Calendar
Date getTime() 返回一个Date表示此日历的时间。Calendar-Date
void add(int field,int amount) 按照日历的规则,给指定字段添加或减少时间量
long getTimeInMillies() 毫秒为单位返回该日历的时间值
import java.util.Calendar;

public class Demo02 {
    public static void main(String[] args) {
        //1创建Calendar对象
        Calendar calendar = Calendar.getInstance();
        System.out.println(calendar.getTime().toLocaleString());
        //获取自1970.1.1-现在的毫秒值(Unix元年)
        System.out.println(calendar.getTimeInMillis());
        //获取时间信息
        //获取年
        int year = calendar.get(Calendar.YEAR);
        System.out.println(year);
        //月(0-11月)显示实际月份需要+1
        int month = calendar.get(Calendar.MONTH);
        System.out.println(month);
        //日
        int date = calendar.get(Calendar.DAY_OF_MONTH);//或DATE
        System.out.println(date);
        //时
        int hour = calendar.get(Calendar.HOUR_OF_DAY);//HOUR_OF_DAY(24h)\HOUR(12h)
        System.out.println(hour);
        //分
        int minute = calendar.get(Calendar.MINUTE);
        System.out.println(minute);
        //秒
        int second = calendar.get(Calendar.SECOND);
        System.out.println(second);

        //输出实际时间
        System.out.println(year+"年"+(month+1)+"月"+date+"日"+hour+":"+minute+":"+second);

        //修改时间
        Calendar calendar1 = Calendar.getInstance();
        calendar1.set(Calendar.DAY_OF_MONTH,1);
        System.out.println(calendar1.getTime().toLocaleString());
        //add方法
        calendar1.add(Calendar.HOUR_OF_DAY,1);//正数加时间,负数减时间
        System.out.println(calendar1.getTime().toLocaleString());

        calendar1.add(Calendar.MONTH,1);
        int max = calendar1.getActualMaximum(Calendar.DAY_OF_MONTH);
        int min = calendar1.getActualMinimum(Calendar.DAY_OF_MONTH);
        System.out.println(max);
        System.out.println(min);

    }
}

SimpleDateFormat

  • SimpleDateFormat是一个以与语言环境有关的方式来格式化和解析日期的具体类。
  • 进行格式化(日期-〉文本)、解析(文本->日期)。
  • 常用的时间模式字母
字母 日期或时间 实例
y 2021
M 一年中的月份 11
d 一个月中的日期 2
H 一天中的小时(0-23) 21
m 分钟 29
s 50
S 毫秒 257
import java.text.SimpleDateFormat;
import java.util.Date;

public class Demo03 {
    public static void main(String[] args) throws Exception {
        //创建SimpleDateFormat对象  y年  M月  d日  H时  m分  s秒  S毫秒
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
        //创建Date对象
        Date date = new Date();
        //格式化Date(把日期转换成字符串)
        String format = sdf.format(date);
        System.out.println(format);

        //解析(把字符串解析成日期)
        Date date1 = new Date();
        Date parse = sdf.parse("2020/12/01 12:12:12");
        System.out.println(parse);
    }
}

猜你喜欢

转载自blog.csdn.net/Mr_yao0/article/details/121081418