1、日期
java.util 包提供了 Date 类来封装当前的日期和时间。
1.1 Date的使用:
获取当日时间:
public class date {
public static void main(String[] args) {
Date date = new Date();
System.out.println(date.toString());
}
}
运行结果:
Fri Jul 30 09:45:03 CST 2021
1.2 Calendar日历类
Calendar类是一个抽象类,在实际使用时实现特定的子类的对象,创建对象的过程对程序员来说是透明的,只需要使用getInstance方法创建即可。
Calendar类对象信息的设置
设置:set
举例:
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DATE,17); //设置日期为17号
System.out.println(cal.get(Calendar.DATE));//打印日期
}
运行结果:
17
Add设置:
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
System.out.println(cal.get(Calendar.DATE) +"||"+ (cal.get(Calendar.MONTH)+1));//
cal.add(Calendar.DATE, 5);
System.out.println(cal.get(Calendar.DATE));
}
1.3 DateFormat类
DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并分析日期或时间。日期/时间格式化子类(如 SimpleDateFormat)允许进行格式化(日期 -> 文本)、分析(文本-> 日期)和标准化。将日期表示为 Date 对象,或者表示为从 GMT(格林尼治标准时间)1970 年1 月 1 日 00:00:00 这一刻开始的毫秒数。
在创建 DateFormat 对象时不能使用 new 关键字,而应该使用 DateFormat 类中的静态方法 getDateInstance(),示例代码如下:
public static void main(String[] args) {
Date date = new Date();
DateFormat d = DateFormat.getDateInstance();//格式化,精确到日
DateFormat t = DateFormat.getDateTimeInstance();//格式化,精确到时分秒
System.out.println(d.format(date));
System.out.println(t.format(date));
}
运行结果:
2021-7-30
2021-7-30 18:52:51
1.4 SimpleDateFormat
SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类,它允许进行格式化(日期→文本)、解析(文本→日期)和规范化。SimpleDateFormat 使得可以选择任何用户定义的日期/时间格式的模式。
举例:
public static void main(String[] args) {
Date date = new Date();
SimpleDateFormat sdf =new SimpleDateFormat("yyyy/MM/dd HH:mm:ss" );
System.out.println(sdf.format(date));
}
运行结果:
2021/07/30 19:00:30
1.5 JDK8 新的时间API
LocalDate获取当前时间:
public static void main(String[] args) {
LocalDate date = LocalDate.now();
System.out.println(date);//获取当前时间
System.out.println(date.getYear());//获取当前的年份(同获取月和日方法一样)
}
2021-07-30
2021
LocalTime获取当前时间:
public static void main(String[] args) {
LocalTime date = LocalTime.now();
System.out.println(date);
System.out.println(date.getSecond());
}
运行结果:
19:11:10.703
10
LocatDateTime获取当前时间:
public static void main(String[] args) {
LocalDateTime date = LocalDateTime.now();
System.out.println(date);
System.out.println(date.getYear());
System.out.println(date.getSecond());
}
运行结果:
2021-07-30T19:12:52.921
2021
52
DateTimeFormatter获取当前时间:
public static void main(String[] args) {
DateTimeFormatter d = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
System.out.println(LocalDateTime.now().format(d));
}
运行结果:
2021-07-30 19:26:28
Instant获取当前时间:
public static void main(String[] args) {
Instant date = Instant.now();
System.out.println(date);
}
运行结果:
2021-07-30T11:15:27.855Z
2. 常用格式化
2.1 NumberFormat
NumberFormat类是Java提供的一个格式化数字的类,可以将一串数字转化成自己想要的数据格式,也可以将字符串转化成数值。
NumberFormat类包含了两个重要的方法,format()和parse();其中format()方法负责将数字转化成字符串,parse()负责将字符
- getInstance()、getNumberInstance()。返回当前默认语言环境的通用数值格式。
- getInstance(Locale)、getNumberInstance(Locale)。返回指定语言环境的通用数值格式。
- NumberFormat.setMinimumIntegerDigits(int)。设置数的整数部分所允许的最小位数。
- NumberFormat.setMaximumIntegerDigits(int)。设置数的整数部分所允许的最大位数。
- NumberFormat.setMinimumFractionDigits(int)。设置最少小数点位数,不足的位数以0补位,超出的话按实际位数输出。
- NumberFormat.setMaximumFractionDigits(int)。设置最多保留小数位数,不足不补0。
2.2 DecimalFormat
DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。
DecimalFormat 包含一个模式 和一组符号 :
“0”:一个数字
“#” :一个数字,不包括0、小数的分隔符的占位符
“,”:分组分隔符的占位符
“;”: 分隔格式。“-”: 缺省负数前缀。
“%” :乘以 100 和作为百分比显示
“?” :乘以 1000 和作为千进制货币符显示;用货币符号代替;如果双写,用国际货币符号代替
“X” :前缀或后缀中使用的任何其它字符,用来引用前缀或后缀中的特殊字符。
2.3 BigDecimal
用来对超过16位有效位的数进行精确的运算。
add(BigDecimal) BigDecimal对象中的值相加,然后返回这个对象。
subtract(BigDecimal) BigDecimal对象中的值相减,然后返回这个对象。 multiply(BigDecimal) BigDecimal对象中的值相乘,然后返回这个对象。 divide(BigDecimal)BigDecimal对象中的值相除,然后返回这个对象。