异常
1.抛出:
throws:用来声明一个方法可能产生的所有异常,不做任何处理而是将异常往上传,谁调用我我就抛给谁
用在方法声明后面,跟的是异常类名
可以跟多个异常类名,用逗号隔开
表示抛出异常,由该方法的调用者来处理
throws表示出现异常的一种可能性,并不一定会发生这些异常
throw:则是用来抛出一个具体的异常类型。
用在方法体内,跟的是异常对象名
只能抛出一个异常对象名
表示抛出异常,由方法体内的语句处理
throw则是抛出了异常,执行throw则一定抛出了某种异常
2.自定义异常:
.1、具有可抛性
2、需要抛出对应的异常 — 出现了异常
3、需要声明该异常 – 告诉调用者有异常存在
日期类
1、Date类
public static void main(String[] args) {
Date date = new Date();
//1592374267000
System.out.println(date+"--"+date.getTime());
//将一个毫秒值的日期转换为日期对象
Date date2 = new Date(1592374267000L);
System.out.println(date2);
//日期比较 compareTo
System.out.println(date.compareTo(date2));
}
2、Calendar类
public class CalendarDem {
public static void main(String[] args) {
//获取Calendar对象 Calendar是一个抽象类, 但是提供了一个 getInstance();方法来生成对象
Calendar calendar = Calendar.getInstance();
//调用get方法返回 要获取指定的值,静态变量使用类名点的方式 如Calendar.xxx
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH)+1; //国外月份十一个月 所以加一
int day = calendar.get(Calendar.DAY_OF_MONTH);
int hours = calendar.get(Calendar.HOUR_OF_DAY); //HOUR是十二小时制 这个是二十四小时制
int minutes = calendar.get(Calendar.MINUTE);
System.out.println(year);
System.out.println(month);
System.out.println(day);
System.out.println(hours);
System.out.println(minutes);
String date = year+"年"+month+"月"+day+"日"+hours+"时"+minutes+"分";
System.out.println(date);
//这样拼接太费事了 可以直接格式化 使用DateFormat类格式化
}
}
3、DateFormat类
public class DateFormatDemo {
public static void main(String[] args) {
//此方法也是个抽象类 提供的有获得对象的方法同 Calendar类一样
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);//获取默认格式的当前日期。不写默认年月日,
String date = df.format(new Date());
System.out.println(date);
df = DateFormat.getTimeInstance(); //获取默认格式的当前时间
String time = df.format(new Date());
System.out.println(time);
df = DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.MEDIUM);
String dateTime = df.format(new Date()); //formate: 将日期格式化成日期/时间字符串,不转换df则是一个地址
System.out.println(dateTime);
}
}
4、SimpleDateFormat类
public class SimpDate {
/**
* SimpleDateFormat用于自定义日期格式化
* @throws ParseException
*/
public static void main(String[] args) throws ParseException {
String patten = "yyyy-MM-dd HH:mm:ss";
SimpleDateFormat sdf = new SimpleDateFormat(patten); //输入自定义的日期格式
String dateTime = sdf.format(new Date());
System.out.println(dateTime); //格式化后系统的时间
//解析异常通常是因为指定的日期格式与时间字符串的日期格式不匹配
String dateTimes = "2020-11-17 18:53:35";//这个格式要跟 patten中的格式相同
Date date = sdf.parse(dateTimes); //parse 从给定字符串的开始解析文本以生成日期。
System.out.println(date);
}
}
5、字符串解析
public class SimpDate {
/**
* SimpleDateFormat用于自定义日期格式化
* @throws ParseException
*/
public static void main(String[] args) throws ParseException {
String patten = "yyyy-MM-dd HH:mm:ss";
SimpleDateFormat sdf = new SimpleDateFormat(patten); //输入自定义的日期格式
String dateTime = sdf.format(new Date());
System.out.println(dateTime); //格式化后系统的时间
//解析异常通常是因为指定的日期格式与时间字符串的日期格式不匹配
String dateTimes = "2020-11-17 18:53:35";//这个格式要跟 patten中的格式相同
Date date = sdf.parse(dateTimes); //parse 从给定字符串的开始解析文本以生成日期。
System.out.println(date);
}
}
6、日期工具类的封装
public class DateUtil {
public static void main(String[] args) {
System.out.println(dateToStr(new Date(), DATE_STYLE01));
}
private static final String DATE_STYLE01 = "yyyy-MM-dd HH:mm:ss";
private static final String DATE_STYLE02 = "yyyy年MM月dd日 HH:mm:ss";
private static DateFormat dateFomat = null; //格式为空
/**
* 获取指定的格式化
*/
public static void format(String partten) {
switch(partten) {
case DATE_STYLE01:
dateFomat = new SimpleDateFormat(partten); //给出对应的格式
break;
case DATE_STYLE02:
dateFomat = new SimpleDateFormat(partten);
break;
}
}
/**
* 将日期对象转换为字符串
* @return
*/
public static String dateToStr(Date date,String partten) {
format(partten);//调用 上面的format方法
return dateFomat.format(date);
}
//将字符串转换为日期对象
public static Date strToDate(String dateStr,String partten) throws ParseException {
format(partten);
return dateFomat.parse(dateStr);
}
//将字符串转换为long 型值
public static long strToLong(String dateStr,String partten) throws ParseException {
Date date = strToDate(dateStr,partten);
return date.getTime();
}
public static int getAge(String birthday,String partten) throws ParseException {
//给定的出生年月
Date oldDate = strToDate(birthday,partten);
//获取现在的时间
Date newDate = new Date();
//获取的日期跟给的时间做毫秒减法运算
long ageL = Math.abs(oldDate.getTime() - newDate.getTime());
double age = (double)ageL/1000/60/60/24/30/12; //毫秒转换为年龄
return (int)Math.floor(age);
}
}