1.String
String具有不可变性,因为String类中定义的是final,即使改变传递的形参,String原内容也不会改变,(额外说一句,形参传递时,基本类型传递的是内容,引用数据类型传递的是地址值)

Strin常用方法



2.StringBuffer
StringBuffer是可变的,传递参数时,值会被改变

构造器:三种方法



3.StringBuilder

4.JDK8之前的时间API
1.java.lang.System类
@Test
public void Test1(){
double num=0;
long startTime;
long endTime;
startTime=System.currentTimeMillis();
System.out.println(startTime);
for (int i = 0; i < 10000000; i++) {
num+=i;
}
endTime =System.currentTimeMillis();
System.out.println(endTime);
System.out.println(endTime-startTime);
System.out.println("-----");
System.out.println(num);
}
@Test
public void Test2(){
Date date =new Date();
System.out.println(date.getTime());
System.out.println(date.toString());
Date date1 =new Date(785785674568786678l);
System.out.println(date1.toString());
}
3.java.text.SimpleDateFormat类

@Test
public void Test3() {
// 格式化:日期-》文本
Date date = new Date();
SimpleDateFormat formater = new SimpleDateFormat();
System.out.println(formater.format(date));// 2022/2/8 下午8:16
SimpleDateFormat formater1 = new SimpleDateFormat("yyyy年MM月dd日 EEE HH:mm:ss z");
// 2022年02月08日 周二 20:25:00 CST
System.out.println(formater1.format(date));
//---------------------------------------------------------
// 解析:文本->日期
try {
Date data1 = formater1.parse("2022年2月8日 星期二 08:08:08 CST");
//解析的文本内容格式须与formater1格式一致
System.out.println(data1.toString());// Tue Feb 08 08:08:08 CST 2022
} catch (ParseException e) {
e.printStackTrace();
}
}
4.java.util.Calendar类
@Test
public void Test4(){
//创建calendar实例
Calendar calendar = Calendar.getInstance();
//获取calendar对象的时间
Date date =calendar.getTime();
System.out.println(date);
//设置calendar对象的时间
date =new Date(84938432432l);
calendar.setTime(date);
System.out.println(calendar.getTime());
// 比如YEAR、MONTH、DAY_OF_WEEK(一周的第几天)、HOUR_OF_DAY(一天的第几个小时) 、MINUTE、SECOND
// 设置calendar重要时间信息
calendar.set(Calendar.YEAR,2021);
calendar.set(Calendar.DAY_OF_WEEK,7);
calendar.set(Calendar.SECOND,60);
calendar.set(Calendar.HOUR,2);
// 获取calendar重要时间信息,必须先设置,才能获取
System.out.println(calendar.get(Calendar.YEAR));
System.out.println(calendar.get(Calendar.DAY_OF_WEEK));
System.out.println(calendar.get(Calendar.SECOND));
System.out.println(calendar.get(Calendar.HOUR));
//对calendar对象的日期时间进行加减
calendar.add(Calendar.HOUR,2);//加两个小时
System.out.println(calendar.get(Calendar.HOUR));
calendar.add(calendar.HOUR,-2);//减两个小时
System.out.println(calendar.get(Calendar.HOUR));
System.out.println(calendar.getTime());
}
5.JDK8中新的时间API

@Test
public void Test5(){
//now()获取当前日期时间
LocalDate localDate = LocalDate.now();
LocalTime localTime = LocalTime.now();
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println(localDate);
System.out.println(localTime);
System.out.println(localDateTime);
System.out.println("1111----------------------");
//of()指定日期时间
localDateTime = LocalDateTime.of(2021,1,1,1,1,1);
localDate =LocalDate.of(2021,2,2);
localTime = LocalTime.of(2,2,2);
System.out.println(localDateTime);
}
2.java.time.Instant类

@Test
public void Test6(){
//获取本初子午线的时间
Instant instant =Instant.now();
System.out.println(instant);
//instant的时间偏移8个时区,东部时区是正的,中国北京在东8时区
OffsetDateTime offsetDateTime = instant.atOffset(ZoneOffset.ofHours(8));
System.out.println(offsetDateTime);
//返回1970-01-01 00:00:00到当前时间的毫秒数,即为时间戳
long time = instant.toEpochMilli();
System.out.println(time);//1644329247619
//创建Instant对象 long型数据指 在1970-01-01 00:00:00基础上加上指定毫秒数
Instant instant1 =Instant.ofEpochMilli(1644329247619l);
System.out.println(instant1);//2022-02-08T14:07:27.619Z
}
3.java.time.format.DateTimeFormatter 类
三种格式化方法:

@Test
public void Test7(){
//方式一: 预定义的标准格式。如:ISO_LOCAL_DATE_TIME; ISO_LOCAL_DATE; ISO_LOCAL_TIME
DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
//格式化:日期-》字符串
LocalDateTime localDateTime = LocalDateTime.now();
String str = formatter.format(localDateTime);
System.out.println(localDateTime);//2022-02-08T22:25:53.952664900
System.out.println(str);//2022-02-08T22:25:53.9526649
//解析:字符串-》日期
TemporalAccessor parse = formatter.parse("2022-02-08T22:25:53.9526649");
System.out.println(parse);
System.out.println("-------------------------------------");
//方式二: 本地化相关的格式。如:ofLocalizedDateTime(FormatStyle.LONG) 一共四种格式,full,long,medium,short
// 'Tuesday, April 12, 1952 AD' or '3:30:42pm PST'.FULL || 'January 12, 1952'.LONG,
// 'Jan 12, 1952'.MEDIUM, ||'12.13.52' or '3:30pm'.SHORT;
DateTimeFormatter formatter1 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG);
//格式化:日期-》字符串
LocalDateTime localDateTime1 =LocalDateTime.now();
String str1 = formatter1.format(localDateTime1);
System.out.println(localDateTime1);
System.out.println(str1);
//
System.out.println("-------------------------------------");
//重点: 方式三:自定义的格式。如:ofPattern(“yyyy-MM-dd hh:mm:ss”)
DateTimeFormatter formatter3 = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
//格式化
String str4 = formatter3.format(LocalDateTime.now());
System.out.println(str4);//2020-05-10 06:26:40
//解析
TemporalAccessor accessor = formatter3.parse("2020-05-10 06:26:40");
System.out.println(accessor);
}
4.其他时间API 类
@Test
public void Test8(){
// ZoneId的getAvailableZoneIds():获取所有的ZoneId
Set <String> zoneIds = ZoneId.getAvailableZoneIds();
for (String s : zoneIds){
// System.out.println(s);
}
// ZoneId的of():获取指定时区的时间
LocalDateTime localDateTime3 = LocalDateTime.now(ZoneId.of("Asia/Tokyo"));
System.out.println(localDateTime3);
// ZonedDateTime的now():获取本时区的ZonedDateTime对象
ZonedDateTime zonedDateTime = ZonedDateTime.now();
System.out.println(zonedDateTime);
// ZonedDateTime的now(ZoneId id):获取指定时区的ZonedDateTime对象
ZonedDateTime zonedDateTime1 = ZonedDateTime.now(ZoneId.of("Asia/Tokyo"));
System.out.println(zonedDateTime1);
}



6、时间类总结
1.java.lang.System类
2. java.util.Date类
3.java.text.SimpleDateFormat类
4.java.util.Calendar类
5.java.time – 包含值对象的基础包 java.time.LocalDate java.time.LocalTime java.time.LocalDateTime java.time.ZonedDateTime
6.java.time.Instant类
7.java.time.format.DateTimeFormatter 类
8.其他时间API 类:
本文详细介绍了Java中关于时间日期的API,包括String的不可变性,StringBuffer与StringBuilder的区别,以及JDK8之前的时间API如System.currentTimeMillis(), Date, SimpleDateFormat和Calendar的使用。接着讲解了JDK8引入的新时间API,如LocalDate, LocalTime, LocalDateTime, Instant, DateTimeFormatter以及ZoneId, ZonedDateTime等,并展示了它们在格式化和解析日期时间方面的优势。最后,总结了Java中处理时间日期的相关类和接口,强调了JDK8新API的易用性和效率提升。
380

被折叠的 条评论
为什么被折叠?



