前言
本章主要介绍Date,Calendar,SimpleForrnat,BigDecimal,BigInteger类
一、Date类
Date类带边当前系统时间,用来显示时间
Date d = new Date();
Date d =new Date(long d);
示例:
package com.ffyc.javaapi.datedemo;
import java.util.Date;
public class DateDemo {
public static void main(String[] args) {
/*
java.util.Date;
new Date();对象 得到一个系统的当前时间
getYear();上边有一个删除线,表示此方法是弃用的方法,不建议使用,有新的方法代替,但是也是可以调用的
*/
Date date =new Date();
System.out.println();
System.out.println(date.getYear()+1900);
System.out.println(date.getMonth()+1);//月份从0开始
System.out.println(date.getDate());//这个月的第几天
System.out.println(date.getDay());//星期从0开始,星期天
System.out.println(date.getHours());
System.out.println(date.getMinutes());
System.out.println(date.getSeconds());
System.out.println(date.getTime());//1694309717613 获取的是从1970.1.1 00.00 到程序运行那一刻的时间差 毫秒值
//测试程序运行的时间 程序运行前 new Date()getTime()程序运行后new Date().getTime()
System.out.println(date);
Date d =new Date(1694309717613L);
}
}
注:国外一般以星期天为一个星期的开始,而getDay()方法中,是以0开始的,所以需要注意使用后的结 果.
二、Calendar类
Calendar类是一个抽象类,在实际使用时实现特定的子类的对象,创建 对象的过程对程序员来说是透明的,只需要使用getInstance方法创建 即可。
Calendar c1 = Calendar.getInstance();
c1.get(Calendar. YEAR);
import java.util.Calendar;
public class CalendarDemo {
public static void main(String[] args) {
/*
Calendar 日历类 抽象类 用来定义日历功能的,具体的实现可以交给子类实现
GregorianCalendar 蔡里高利历(公历) 是Calendar抽象类得具体子类
*/
//Calendar c=new GregorianCalendar();
Calendar c=Calendar.getInstance();
System.out.println(c.get(Calendar.YEAR));//get(具体的日历属性
System.out.println(c.get(Calendar.MONTH)+1);//月
System.out.println(c.get(Calendar.DAY_OF_MONTH));//日
System.out.println(c.get(Calendar.DAY_OF_WEEK));//一周中的第几天
System.out.println(c.get(Calendar.DAY_OF_YEAR));//一年中的第几天
System.out.println(c.get(Calendar.WEEK_OF_MONTH));
System.out.println(c.get(Calendar.WEEK_OF_YEAR));
System.out.println(c.get(Calendar.HOUR_OF_DAY));
System.out.println(c.get(Calendar.MINUTE));
System.out.println(c.get(Calendar.SECOND));
//c.set(2022,9,10); 设置系统时间
//System.out.println(c.get(Calendar.Year));//get(具体的日历属性)
System.out.println(c.getTimeInMillis());//获取的是从1970.1.1 00.00 到程序运行那一刻的时间差
}
}
注意Calendar中定义系统时间的方式
三、SimpleDateFormat类
作用为日期的格式化
构造方法 SimpleDateFormat(格式); // yyyy-MM-dd
日期转字符串 Date now=new Date(); myFmt.format(now);
字符串转日期 myFmt.parse(“2018-02-10”); 字符串日期格式与 指定格式必须一致
例如:String s = “2018-03-15”;
new SimpleDateFormat(“yyyy-MM-dd”)
类型转换:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDateFormatDemo {
public static void main(String[] args) throws ParseException {
Date date = new Date();
String s = "张三";
//System.out.printIn(s+""+date.getYear()+1900+"年"+date.getMonth()+1);
/*
把Date类型转换为字符串
*/
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String datestr = sdf.format(date);
System.out.println(datestr);
/*
把字符串日期 转为 Date 类型
*/
String str="2002-3-2";
SimpleDateFormat sdf1=new SimpleDateFormat("yyyy-MM-dd");
Date d=sdf1.parse(str);
System.out.println(d);
}
}
四、BigDecimal类
作用:在计算精密类型的数据时,double或者浮点数都会出现浮点数丢失的情况,所以需要用到BigDecimal类来解决此问题.
import java.math.BigDecimal;
public class BigDecimalDemo {
public static void main(String[] args) {
BigDecimal a=new BigDecimal("0.1");
BigDecimal b=new BigDecimal("0.2");
BigDecimal c=a.add(b);
System.out.println(c);
BigDecimal a1 = new BigDecimal("10");
BigDecimal b1 = new BigDecimal("3");
BigDecimal c1 = a1.divide(b1, 2, BigDecimal.ROUND_FLOOR);
System.out.println(c1);
}
}
五、BigInteger类
作用:用来处理一些数值较大的,超过了int甚至是long类型最大值的数字的运算
import java.math.BigInteger;
public class BigIntegerDemo {
public static void main(String[] args) {
BigInteger a=new BigInteger("111111111111111111111111111111");
BigInteger b=new BigInteger("888888888888888888888888888889");
BigInteger c=a.add(b);
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}
总结
1.在需要调用时间的代码中,注意三种类的使用方法,以及字符串和Date类型相互转换以解决问题
2.在处理需要精确小数点后的运算时,可以使用BigDecimal
3.在处理较大数的运算时,不要忘记还有BigInteger类可以使用