日期类结构:
1.java.util.Date是日期类
2.DateFormat是日期格式类、SimpleDateFormat是日期格式类的子类
Timezone代表时区
3.Calendar是日历类,GregorianCalendar是日历的子类
一. 常用类-Date
1.1 Date构造方法
Date(long date) 使用给定的毫秒时间价值构建 Date对象
Date() 返回系统的当前时间
日期是有时间的起点的,以地理位置格林尼治时间1970-01-01 00:00:00 为标准,视为时间的起点;Date(long date) 指的是距离标准时间过了多少毫秒;
public class Test01 {
public static void main(String[] args) {
Date date = new Date();
//创建对象,返回当前系统的时间
System.out.println(date);
//创建距离格林尼治时间标准时间过了1000毫秒的日期
Date date2 = new Date(1000L);
System.out.println(date2);
}
}
1.2 Date类常用方法
public class Test01 {
public static void main(String[] args) {
//1) 创建Date对象返回当前时间
Date date = new Date();
System.out.println(date);
//2) 获得Date时间距离1970-1-1 00:00:00 经过的毫秒数
long time = date.getTime();
System.out.println(time);
//3) 调用System.currentTimeMillis()返回当前时间对应的毫秒数
long l = System.currentTimeMillis();
System.out.println(l);
//4) 根据毫秒数创建日期对象
Date date1 = new Date(l);
System.out.println(date1);
}
}
1.3 常用的日期相关类-java.util.SimpleDateFormat
format方法
public class Test {
public static void main(String[] args) {
Date date = new Date();
//定义字符串标准
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//把日期类变成字符串
String s = sdf.format(date);
System.out.println(s);
}
}
parse方法
public class Test {
public static void main(String[] args) throws ParseException {
String text = "2023年8月21日 20:52:58";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年M月dd日 HH:mm:ss");
Date date = sdf.parse(text);
System.out.println(date);
}
}
1.4 常用的日期相关类-java.util.Calender
创建Calender日历对象
public class Test {
public static void main(String[] args) {
//获取实例对象:静态方法,推荐
//1.创建对象
//Calendar是抽象类,所以不能直接创建对象
//使用getInstance()方法创建对象
Calendar calendar = Calendar.getInstance();
//2.set方法设置日历信息
//设置年
calendar.set(Calendar.YEAR,2019);
//日历用0-11 表示 1-12月
calendar.set(Calendar.MONTH,1);
//设置日 一月中的天数
calendar.set(Calendar.DAY_OF_MONTH,8);
//设置一天中的小时数
calendar.set(Calendar.HOUR_OF_DAY,15);
//设置一小时的分钟数
calendar.set(Calendar.MINUTE,20);
//设置一分钟的秒数
calendar.set(Calendar.SECOND,58);
calendar.set(2018,1,2);
calendar.set(2017,1,2,22,20,20);
//3.get方法获取日历信息
System.out.println(calendar.get(Calendar.YEAR));
//日历用0-11 表示 1-12月
System.out.println(calendar.get(Calendar.MONTH));
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
System.out.println(calendar.get(Calendar.HOUR_OF_DAY));
System.out.println(calendar.get(Calendar.MINUTE));
System.out.println(calendar.get(Calendar.SECOND));
//4.将日历转为日期
Date date = calendar.getTime();
System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date));
}
}
二. 新日期类
旧日期类计算复杂存在线程安全问题
2.1 日期初始化操作
通过now方法 获得
public class Test {
public static void main(String[] args) {
//获得Instant对象,获取格林尼治的当前时间
Instant instant = Instant.now();
System.out.println(instant);
//获得LocalDate,获得本地的当前年月日
LocalDate localDate = LocalDate.now();
System.out.println(localDate);
//获得LocalTime,获得本地的当前时分秒
LocalTime localTime = LocalTime.now();
System.out.println(localTime);
//获得LocalDateTime实例,获得本地的当前年、月、日、时、分、秒
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println(localDateTime);
//使用now方法创建ZonedDateTime实例,获得本地时区的年、月、日、时、分、秒
ZonedDateTime zonedDateTime = ZonedDateTime.now();//我国时间以东8区为准,也就是所说的北京时间。按东8区计算
System.out.println(zonedDateTime);
}
}
public class Test2 {
public static void main(String[] args) {
Year year = Year.now();
System.out.println(year);
YearMonth month = YearMonth.now();
System.out.println(month);
MonthDay day = MonthDay.now();
System.out.println(day);
}
}
通过of方法 获得
public class Test {
public static void main(String[] args) {
//根据参数创建本地日期对象
LocalDate date = LocalDate.of(2023, 12, 1);
System.out.println(date);
//根据参数创建本地时间对象
LocalTime localTime = LocalTime.of(9,12,12,311);
System.out.println(localTime);
//根据参数创建本地日期加时间对象
LocalDateTime localDateTime = LocalDateTime.of(2023,12,12,12,12,12);
System.out.println(localDateTime);
//根据日期和时间创建本地日期时间对象
LocalDateTime localDateTime1 = LocalDateTime.of(date,localTime);
System.out.println(localDateTime1);
}
}
未完待续