一、BigDecimal 类的使用
- 位置
java.math
包中 - 作用 精确计算浮点数
- 创建方式
BigDecimal bd = new BigDecimal("1.0");
BigDecimal bd1 = new BigDecimal("1.0"); // 需用字符串表示数字,更加精准
BigDecimal bd2 = new BigDecimal("0.9");
// 减法
BigDecimal r1 = bd1.subtract(bd2);
sout(r1); // 0.1
// 加法
BigDecimal r2 = bd1.add(bd2);
//乘法
BigDecimal r3 = bd1.multiply(bd2);
// 除法
BigDecimal r4 =new BigDecimal("1.4").subtract(new BigDecimal("0.5")).divide(new BigDecimal("0.9"), x, BigDecimal.ROUND_HALF_UP);
//除不尽时 x填保留位数 后面为四舍五入之意
二、Date 类
Date表示特定的瞬间,精确到毫秒。Date类中的大部分方法都已经被Calendar类中的方法所取代
时间单位:1s = 1,000ms = 1,000,000 μs = 1,000,000,000 = ns
构造方法:
Date() 分配Date对象并初始化此对象,可与new搭配
Date(long date) 分配Date对象并初始化此对象,表示从基准时间(1970年1月1日00:00:00) 以来的指定毫秒数
方法摘要:
boolean | after(Date when) | 测试此日期是否在指定日期之后 |
boolean | before(Date when) | 测试此日期是否在指定日期之前 |
int | compareTo(Date anotherDate) | 比较两个日期的顺序(多为1,少为-1) |
boolean | equals(Object obj) | 比较两个日期的相等性 |
psvm(String[] aargs){
//1.创造Date对象
Date date1 = new Date();//昨天:Date(date1.getTime()-24*60*60*1000)
Sout(date1.toString());//Mon Apr 06 18:24:59 CST 2020
Sout(date1.toLocaleString());//过时方法: 2020-4-5 18:24:59
//2.方法after() before()
boolean b1 = date1.after(date2);
sout(b1); //true
boolean b2 = date1.before(date2);
sout(b2); //false
//3.比较compareTo();
int d = date1.compareTo(date1);
//4.比较是否相等 equals()
boolean b3 = date1.equals(date2);
sout(b3); // false
}
三、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 getTime() | 返回一个date表示此日历的时间 |
void add(int field, int amount) | 按照日历的规则,给指定字段添加或减少时间量 |
long getTimeInMilles() | 毫秒为单位返回该日历的时间值 |
方法举例:
psvm(String[] args){
//1.创建Calender对象
Calender calender=Calender.getInstance();
sout(calender.getTime().toLocaleString());//输出具体日期时间
sout(calender.getTimeInMillins());//输出毫秒值
//2.获取时间信息
//获取年月日小时分钟秒
int year=calender.get(calender.YEAR);
int month=calender.get(calender.MONTH);
int day=calender.get(calender.DAY_OF_MONTH);
int hour=calender.get(calender.HOUR_OF_DAY);//HOUR:12h,HOUR_OF_DAY:24h
int minute=calender.get(calender.MINUTE);
int second=calender.get(calender.SECOND);
sout(year+"年"+month+"月"+day+"日"+hour+"时"+minute+"分"+second+"秒");
//3.set修改时间
Calender calender2 = calender.getInstance();//calender.getInstance().set(Calender.DAY_OF_MONTH,5)
calender2.set(Calender.DAY_OF_MONTH,5);
//4.add修改时间
calender2.add(Calender.HOUR,-1);//小时数加-1(减1)
sout(calender2.getTime().toLocaleString());
//5.补充方法(获取当前时间的最值)
int max = calender2.getActualMaximum(Calender.DAY_OF_MONTH);
int min = calender2.getActualMinimum(Calender.DAY_OF_MONTH);
}
四、SimpleDateFormat类
SimpleDateFormat() 方法可以自定义日期的格式
可以将 字符串—>日期,日期—>字符
字母 | 日期或时间 | 示例 |
---|---|---|
y | 年 | 2019 |
M | 年中月份 | 08 |
d | 月中天数 | 10 |
H | 一天中小时(0-23) | 22 |
m | 分钟 | 16 |
s | 秒 | 59 |
S | 毫秒 | 356 |