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);
}
}