1.什么时api?
答:应用程序接口,别人暴露一个接口,别人可以按照自己的需求设计自己的工具来和这个接口对接。api的概念十分广泛,只要是给别人用的类包括方法都可以叫做api。(广义上的接口,不同于面向对象中的接口的含义)
2.api相当于帮助文档,可以在线学习java各个类的含义以及这些类提供的接口,函数,构造器的说明等信息,用于快速开发工具等。
https://www.matools.com/api/java8
3.doc文档的标记方式就是可以把我们自己写的一个类输出为api文档的格式,api文档是以html语言实现的所以可以直接使用浏览器来打开。
4.idea生成api文档步骤:
点击想要生成的项目文件-点击tools-点击generate javadoc -选择输出的路径-在”其他的命令行参数处输入以下的 -encoding utf-8 charset utf-8“为了防止中文导致的编码异常错误-点击ok就可以生成api文档,并且可以直接在浏览器上直接打开使用和查看。
(注意使用这个文档时,注释的内容使用doc文档注释的方法来做注释的效果比较理想)
5.time相关的api
背景:时间的背景使用方式,不同国家存在时区的不同,世界标准时间为英国格林尼治时间;时间戳,是指1970年1月1日0时0分0秒到当下时间的段内的毫秒数,这个时间戳是全世界通用的(北京时间为东八区,所以时间),格林尼治标准时间简称GTM。
获取当前时间的时间戳:使用system.currenttimel
5.1date(类文件在哪?-类的构造器,以及静态方法,常见方法,启用方法的注意等事项)
import java.util.Date;
public class DateTest {
public static void main(String[] args) {
Date date = new Date();//新建一个date对象,他的值为当前的世界时间,即格林尼治时间
System.out.println(date);//世界标准时间的打印方式
long time = date.getTime();//其余方法都已经过时
System.out.println(time);//时间戳,这个时间戳的获取将对象转化为时间戳的显示方式
System.out.println(System.currentTimeMillis());//
Date date2 = new Date();
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
Date date3 = new Date();
System.out.println(date2.after(date3));
System.out.println("date2.before(date3) = " + date2.before(date3));
System.out.println(date.getDate()+7);//获得7天之后的一个日期是多少号,注意这个方法已经被弃用了,可能会在下个版本无法使用
//大量存在使用这个方法的公司,因此学习和使用这些文档并使用其他合适的方法来替换掉他们是十分有必要的;
}
}
5.2calender类(日历抽象类,并且针对不同的国家,提供了不同的类)
注意calender这个类的构造器被私有化了,原因是不同国家的日历是不同的
Calender类中提供了大量的整型字段,其中包括使用什么整型数字来代表不同的年月日,加快代码的编写速度;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
public class Calender {
public static void main(String[] args) {
Calendar calender = Calendar.getInstance();
int month = calender.get(Calendar.MONTH) + 1;//点击Calender类,可以知道在日历类中有不少的静态常量,所以这里的
//2代表的是获取这个calender 的月份,需要注意的是这个获取到是实际月份的前一个月,月份是从0开始的。
int year = calender.get(Calendar.YEAR);//使用静态常量的好处是便于对一些函数的记忆。
int dayOfYear = calender.get(Calendar.DAY_OF_MONTH);//一个月的第多少天
int weekOfYear = calender.get(Calendar.WEEK_OF_YEAR);
System.out.println("weekOfYear = " + weekOfYear);
System.out.println("month = " + month);
System.out.println("dayOfYear = " + dayOfYear);
System.out.println("______________");
calender.set(1997,11,21);
int year2 = calender.get(Calendar.YEAR);
int month2 = calender.get(Calendar.MONTH);
int date3 = calender.get(Calendar.DAY_OF_MONTH);
System.out.println(year2 + "年" + month2 + "月" + date3 + "日");
Calendar current_calendar = Calendar.getInstance();
System.out.println(current_calendar.get(Calendar.DAY_OF_MONTH) + 7);//一周的七天后
current_calendar.add(Calendar.YEAR,7);
int year3 = current_calendar.get(Calendar.YEAR);
int month3 = current_calendar.get(Calendar.MONTH);
int day4 = current_calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(year3 + "年" + (month3 + 1) + "月" + day4 + "日");
System.out.println("______________");
Date time = calender.getTime();//Calender对象可以使用getTime()函数转化为日期类对象;
calender.setTime(time);//setTime()函数可以直接将Date对象变为一个Calender对象,这个方法可以将企业中运行的Date对象使用calender对象来替换掉
System.out.println(time);
System.out.println("__________________");
System.out.println(calender.getTimeZone());
}
}
5.3SimpleDateFormat类
package com.ydlclass.date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDateFormatTest {
public static void main(String[] args) throws ParseException {
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
String dateOfString = simpleDateFormat.format(date);
System.out.println(dateOfString);
Date parse = simpleDateFormat.parse("2022/3/20 下午12:31");
System.out.println("parse = " + parse);
simpleDateFormat.applyPattern("yyyy.MM.dd G 'at' HH:mm:ss z");//G表示公元,z表示时区;
simpleDateFormat.applyPattern("yyyy-MM-dd HH:mm:ss ");//G表示公元,z表示时区;大写H表示小时制,小写则是12小时制;
simpleDateFormat.applyPattern("yyyy年MM月dd HH:mm:ss ");//G表示公元,z表示时区;大写H表示小时制,小写则是12小时制;
String pattern = simpleDateFormat.format(date);//
System.out.println(pattern);
}
}
6.自写时间工具类 (编写诸如类似于calender工具类的主要目的是方便程序员的下一次使用,并且可以提高代码的复用程度,核心思想是使用静态方法) 实现类对方法的直接调用;
package com.ydlclass.date;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateUtil {
public static Date now(){//定义了一个直接获取当前时间的静态方法,这个方法的返回的类型是一个Date类
return new Date();
}
public static String nowString(){//定义了一个静态方法用于获取时间的字符串的格式,并且依赖于一个其他的类,simpleDateFormat类实现从日期类转化为字符串,其中注意simpleDateFormat这个类需要使用特殊的模式完成。
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
simpleDateFormat.applyPattern("yyyy年MM月dd HH:mm:ss ");//G表示公元,z表示时区;大写H表示小时制,小写则是12小时制;
String format = simpleDateFormat.format(date);
return format;
}
public static void main(String[] args) {
Date now = DateUtil.now();//静态方法直接实现工具类
System.out.println(now);
String s = DateUtil.nowString();
System.out.println(s);
}
}
、、
改写上面的方法以此实现更高形式的工具类(实现方式二,改进版本)
package com.ydlclass.date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateUtil {
public static final String Default_PATTERN = "yyyy-MM-dd HH:mm:ss";
public static Date now(){
return new Date();
}
public static Date now(String date){
// SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
// simpleDateFormat.applyPattern("yyyy-MM-dd HH:mm:ss");
//
// Date parse = null;//如果直接把parse对象定义在try内部可能会造成无法返回的情况
// try {
// parse = simpleDateFormat.parse(date);
// } catch (ParseException e) {
// e.printStackTrace();
// }
// return parse;
//由于已经存在一个方法实现了相关的功能于是我们直接使用这个方法即可
return now(date,null);
}
public static Date now(String date,String pattern){
SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
simpleDateFormat.applyPattern(pattern);
Date parse = null;//如果直接把parse对象定义在try内部可能会造成无法返回的情况
try {
parse = simpleDateFormat.parse(date);
} catch (ParseException e) {
e.printStackTrace();
}
return parse;
}
public static String nowString(){//可以优化代码,降低冗余
// Date date = new Date();
// SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
// simpleDateFormat.applyPattern("yyyy年MM月dd HH:mm:ss ");//G表示公元,z表示时区;大写H表示小时制,小写则是12小时制;
// String format = simpleDateFormat.format(date);
// return format;
return nowString("yyyy-MM-dd HH:mm:ss");
}
public static String nowString(String pattern){//这里是重载的方法,可以将自己想要输出的格式相应的输出出来。
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
simpleDateFormat.applyPattern(pattern);//G表示公元,z表示时区;大写H表示小时制,小写则是12小时制;
return simpleDateFormat.format(date);
}
public static void main(String[] args) {
Date now = DateUtil.now();
System.out.println(now);
String s = DateUtil.nowString();
System.out.println(s);
}
}