日期类结构:
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);}
}
未完待续