常用API
API(Application Programming Interface)应用程序接口
JDK给我们提供的一些已经写好的类,我们可以直接调方法来解决问题
String(可以叫API接口)
我们类的方法,在宏观上都可以称为接口
API文档,用来介绍API
时间相关的API
时间:
格林尼治天文台
时区:东八区
北京时间
时间戳:格林尼治时间1970.1.1 00:00:00 到尽头2022.7.28 9:29:30 的毫秒数
1s = 1000ms , 1min = 60s , 1h = 60min , 1day =24h。
时间戳在全世界都是固定的。忽略了时区等
System.currentTimeMillis()
日期类 Date
获取系统当前日期时间
Date date = new Date();
System.out.println(date);
compareTo
当返回负数时,说明调用者时间是在参数时间之前
当返回0时,说明调用者时间和参数时间相同
当返回正数时,说明调用者时间在阐述时间之后
Date date1 = new Date(1658974415756L); // 10:13:35
Date date2 = new Date();
System.out.println(date1.compareTo(date2));
日历类:日期,时间
Calendar是一个抽象类,能new不能创建对象
初始化;
提供了一组对“年月日、时分秒、星期”等信息的操作函数。可以操作不同时区的信息。
JDK1.1版本开始,在处理时间和日期时,系统推荐使用Calendar类
Calendar要比Date强大的多
除非要获取的年月日十分秒一次性拿取,否则一律用calendar
public static void main(String[] args) {
//向上转型
Calendar calendar = Calendar.getInstance();
//获取哪年
System.out.println(calendar.get(Calendar.YEAR));
//获取今年过了多少天
System.out.println(calendar.get(Calendar.DAY_OF_YEAR));
//24小时
System.out.println(calendar.get(Calendar.DATE));
//12小时
System.out.println(calendar.get(Calendar.MONTH));
System.out.println(calendar.get(Calendar.HOUR_OF_DAY));
System.out.println(calendar.get(Calendar.HOUR));
System.out.println(calendar.get(Calendar.MILLISECOND));
}
Zoneld
获得某一时区的id
ZoneId zoneId = ZoneId.of("America/New_York");
System.out.println(TimeZone.getTimeZone(zoneId));
日期格式化(SimpleDateFormat)
format:格式化Date类型,把Date类型转成String类型
我们要展示数据到客户端
parse:把String类型的时间,转成Date类型
从客户端传过来的时间,一般都是String类型,存入数据库。
Date date = new Date(); System.out.println(date); SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss"); String s = sdf.format(date); System.out.println(s);
yyyy代表年,yy代表年的后两位
MM代表月
dd代表日
HH代表小时(24小时制) hh代表小时(12小时制)
mm代表分
ss代表秒
SSS代表毫秒
工具类的方法都是静态
JDK8的日期时间类
在JDK8之前,处理日期和时间,基本上就是用我们上面的几个类
Date和Calendar,获取到的月份都是0-11,而不是我们生活中的1-12
阿里巴巴规约的明确要求:
如果是JDK8的应用,可以使用Instant来代替Date,
LocalDateTime代替Calendar,
DateTimeFormatter代替SimpleDateFormat
新的时间类
Instant
LocalDate
LocalTime
DateTimeFormatter
获取秒数
System.out.println(instant.getEpochSecond());
获取毫秒数
System.out.println(instant.toEpochMilli());
long millis = System.currentTimeMillis();
System.out.println(Instant.ofEpochMilli(millis));
持续时间Duration
public class Ch02 {
public static void main(String[] args) {
Instant instant = Instant.now();
Instant plus = instant.plus(Duration.ofDays(5));
System.out.println(plus);
}
}
获取当前日期:LocalDate
LocalDate now = LocalDate.now();
System.out.println(now);
System.out.println(now.getMonth());
System.out.println(now.getDayOfWeek());
System.out.println(now.getDayOfMonth());
LocalDate of = LocalDate.of(2024, 9, 10);
System.out.println(of);
判断是否为闰年
System.out.println(of.isLeapYear());
本地时间LocalTime
public static void main(String[] args) {
LocalTime now = LocalTime.now();
System.out.println(now);
}
获取日期和时间
public static void main(String[] args) {
System.out.println(LocalDateTime.now());
}
处理日期的格式化问题DateTimeFormatter
public static void main(String[] args) {
LocalDate now = LocalDate.now();
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
System.out.println(now.format(dateTimeFormatter));
}
把Instant转成Date
Date date = Date.from(instant);
把Date转成Instant
Instant toInstant = date.toInstant();
把Instant转成LacalDateTime
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
// 把LocalDateTime转成Instant
Instant instant1 = LocalDateTime.now().toInstant(ZoneOffset.UTC);
// 把date转成LocalDateTime
Date date1 = new Date();
Instant instant2 = date.toInstant();
LocalDateTime localDateTime1 = LocalDateTime.ofInstant(instant2, ZoneId.systemDefault());
// 把LocalDateTime转成Date
LocalDateTime now = LocalDateTime.now();
Instant instant3 = now.atZone(ZoneId.systemDefault()).toInstant();
Date date2 = Date.from(instant3);
BigDecimal统计类
public static void main(String[] args) {
double d1 = 0.7;
double d2 = 0.1;
BigDecimal bigDecimal1 = new BigDecimal(d1);
BigDecimal bigDecimal2 = new BigDecimal(d2);
// 使用BigDecimal的构造器,开发中,传入的参数必须是字符串
BigDecimal bigDecimal3 = new BigDecimal("0.7");
BigDecimal bigDecimal4 = new BigDecimal("0.1");
System.out.println(bigDecimal3.add(bigDecimal4));
}
随机类Random
public static void main(String[] args) {
Random random = new Random();
System.out.println(random.nextDouble());
}
Arrays数组的工具类
public static void main(String[] args) {
int [] arr = new int[]{1,2,3,4,5};
System.out.println(Arrays.toString(arr));
//数组的排序
Arrays.sort(arr);
//数组的查找
System.out.println(Arrays.binarySearch(arr, 4));
//数组的拷贝
int[] ints = Arrays.copyOf(arr, 2);
System.out.println(Arrays.toString(ints));
//数组的比较
System.out.println(Arrays.equals(arr, ints));
}