日期类

二,Date
–1,概述
对于日期进行各种操作
–2,创建对象
Date()
分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)。
–3,常用方法
int getDate()
已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.DAY_OF_MONTH) 取代。
int getDay()
已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.DAY_OF_WEEK) 取代。
int getHours()
已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.HOUR_OF_DAY) 取代。
int getMinutes()
已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.MINUTE) 取代。
int getMonth()
已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.MONTH) 取代。
int getSeconds()
已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.SECOND) 取代。
long getTime()
返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
int getTimezoneOffset()
已过时。 从 JDK 1.1 开始,由 -(Calendar.get(Calendar.ZONE_OFFSET) + Calendar.get(Calendar.DST_OFFSET)) / (60 * 1000) 取代。
int getYear()
已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.YEAR) - 1900 取代。

--4,测试
	package cn.tedu.api;
	import java.util.Date;
	//测试  日期工具类
	public class Test2_Date {
		public static void main(String[] args) {
			//1,创建Date对象
			Date date = new Date();
			
			//TODO  2,调用方法
			System.out.println(  date.getDate()  );//今天是多少号
			System.out.println(  date.getDay()  );//今天是星期几
			System.out.println(  date.getHours()  );//现在是几点
			System.out.println(  date.getMinutes() );//现在是多少分钟
			System.out.println(  date.getMonth()  );//TODO 现在是几月????  
			System.out.println(  date.getSeconds()  );//现在是多少秒
			System.out.println(  date.getTime()  );//从1970.1.1 零点到现在的毫秒值
			System.out.println(  date.getYear()  );//从1900年到现在是多少年
			System.out.println(  date.toLocaleString()  );//2020-8-15 11:53:50
			
		}
	}

三,日期工具SimpleDateFormat
–1,概述
专门用来把日期数据进行转化.把 String类型的日期 和 Date类型的日期 互转
–2,创建对象
SimpleDateFormat(String pattern)
用给定的模式和默认语言环境的日期格式符号构造
–3,常用方法
String format(Date date)
将给定的 Date 格式化为日期/时间字符串,变成String。
Date parse(String text)
解析字符串的文本,生成 Date。
–4,测试
package cn.tedu.api;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
//测试 日期格式化的工具类SimpleDateFormat – Date<->String
public class Test3_SimpleDF {
public static void main(String[] args) throws Exception {
//1,创建对象–参数是日期的格式 年y-月M-日d 月/日/年
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd”);
//2,常用方法
// Date date = new Date();
// String str = sdf.format(date) ;
String str = sdf.format(new Date());//Date->String
System.out.println(str);//2020-08-15
Date d = sdf.parse(“2020-08-15”);//String->Date
System.out.println(d.getMonth());

			//3,计算存活天数
			//接收输入的出生日期
			String birthday = new Scanner(System.in).nextLine();
			//String->Date
			Date birth = sdf.parse(birthday);
			
			//计算天数
			long start = birth.getTime() ;//出生日期 对应的毫秒值
			long now = System.currentTimeMillis() ;//当前时间的毫秒值
			
			System.out.println( (now-start)/1000/60/60/24 );//ms->天
			
		}
	}

四,BigDecimal/BigInteger
–1,概述
–BigDecimal专门用来解决 浮点数运算不精确的问题
–BigInteger专门用来解决 大型的整数运算
–2,BigDecimal创建对象
BigDecimal(double val)
将 double 转换为 BigDecimal,后者是 double 的二进制浮点值准确的十进制表示形式。
BigDecimal(String val)
将 BigDecimal 的字符串表示形式转换为 BigDecimal。
–3,常用方法
加法: BigDecimal add(BigDecimal augend)
减法: BigDecimal subtract(BigDecimal subtrahend)
乘法: BigDecimal multiply(BigDecimal multiplicand)
除法: BigDecimal divide(BigDecimal divisor)
–4,测试
package cn.tedu.api;
import java.math.BigDecimal;
import java.util.Scanner;
//测试 小数运算精确的解决方案
public class Test4_BigDecimal {
public static void main(String[] args) {
// method();//暴露问题
method2();//解决方案
}
public static void method2() {
//接收输入的两个小数
double a = new Scanner(System.in).nextDouble();
double b = new Scanner(System.in).nextDouble();

			//创建对象
			//含参构造BigDecimal(double val)--有坑 
	//		BigDecimal bd1 = new BigDecimal(a);
	//		BigDecimal bd2 = new BigDecimal(b); 
			
			//触发含参构造BigDecimal(String val) -- 推荐
			BigDecimal bd1 = new BigDecimal( String.valueOf(a) );//double->String
			BigDecimal bd2 = new BigDecimal(b+"");//double->String
			
			BigDecimal bd3 = bd1.add(bd2);//加法
			System.out.println(bd3);
			
			bd3 = bd1.subtract(bd2);//减法
			System.out.println(bd3);
			
			bd3 = bd1.multiply(bd2);//乘法
			System.out.println(bd3);
			
			//除法--除不尽时--java.lang.ArithmeticException
	//		bd3 = bd1.divide(bd2);
	//重载的divide(x,y,z)-x是要参与运算的对象名称,y是保留的小数位数,z是舍入模式
			bd3 = bd1.divide(bd2,5,BigDecimal.ROUND_HALF_UP);
			System.out.println(bd3);
		}
		//暴露问题
		public static void method() {
			//接收输入的两个小数
			double a = new Scanner(System.in).nextDouble();
			double b = new Scanner(System.in).nextDouble();
			
			//做运算
			System.out.println(a+b);//不精确
			System.out.println(a-b);//不精确
			System.out.println(a*b);//不精确
			System.out.println(a/b);//不精确
		}
	}
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页