Java日期和时间
大约 3 分钟
Java日期和时间
一、Date、Calendar(老版日期时间类)
1-1、Date使用
/**
* ClassName:DateTest
* Package:date
* Description
*
* @Author:@wenxueshi
* @Create:2023/7/22 - 16:20
* @Version:v1.0
*/
//老版日期时间类之一:Date
public class DateTest {
public static void main(String[] args) {
//获取当前时间
Date date = new Date();
//不好看:Sat Jul 22 16:25:14 CST 2023
System.out.println(date);
//获取当前年份要+1900:2023年
System.out.println(date.getYear() + 1900);
//多加一个月才是真正的当前月份:7月
System.out.println(date.getMonth() + 1);
//日期是对的:22号
System.out.println(date.getDate());
//转化为本地时间:2023-7-22 16:25:14
System.out.println(date.toLocaleString());
//转化为GMT时区:22 Jul 2023 08:29:16 GMT
System.out.println(date.toGMTString());
Date date1 = new Date(System.currentTimeMillis());
//根据当前系统时间戳初始化Date:Sat Jul 22 16:30:12 CST 2023
System.out.println(date1);
}
}
缺点:获取Date对象的年、月时都还需要额外的操作,不方便,而且Date类内部,对于大多数方法也已经废弃。
2-2、Calendar
Calendar相比较Date多了可以对时间运算的功能,也可以通过getTime方法把Calendar转化为Date.
public class CalendarTest {
public static void main(String[] args) {
//获取Calendar实例
Calendar cal = Calendar.getInstance();
//获取年、月、日、时、分、秒
System.out.println(cal.get(Calendar.YEAR));
System.out.println(cal.get(Calendar.MONTH) + 1);
System.out.println(cal.get(Calendar.DAY_OF_MONTH));
System.out.println(cal.get(Calendar.HOUR_OF_DAY));
System.out.println(cal.get(Calendar.MINUTE));
System.out.println(cal.get(Calendar.SECOND));
}
}
2-3、Date的格式化
2-3-1、DateFormat
public class DateFormatTest {
public static void main(String[] args) {
Date date = new Date();
//处理日期转换
DateFormat dateInstance = DateFormat.getDateInstance();
// 2023-7-22
System.out.println(dateInstance.format(date));
//处理时间转换
DateFormat timeInstance = DateFormat.getTimeInstance();
//16:46:04
System.out.println(timeInstance.format(date));
//处理日期时间转换
DateFormat dateTimeInstance = DateFormat.getDateTimeInstance();
//2023-7-22 16:46:43
System.out.println(dateTimeInstance.format(date));
}
}
说明:DateFormat只可以处理固定的三种格式转换,一般我们是使用它的一个实现类SimpleDateFormat
2-3-2、SimpleDateFormat
public class SimpleDateFormat {
public static void main(String[] args) {
Date date = new Date();
//自定义日期时间格式
java.text.SimpleDateFormat dateFormat = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//2023-07-22 16:50:28
System.out.println(dateFormat.format(date));
java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy年MM月dd日 HH时:mm分钟:ss秒");
//2023年07月22日 16时:52分钟:14秒
System.out.println(format.format(date));
}
二、LocalDateTime(Java8新版日期时间类)
1-1、基本用法
public class LocalDateTimeTest {
public static void main(String[] args) {
//获取日期时间
LocalDateTime dateTime = LocalDateTime.now();
//获取年、月、日、时、分、秒
System.out.println(dateTime.getYear());
System.out.println(dateTime.getMonthValue());
System.out.println(dateTime.getDayOfMonth());
System.out.println(dateTime.getHour());
System.out.println(dateTime.getMinute());
System.out.println(dateTime.getSecond());
//自定义日期时间
LocalDateTime localDateTime = LocalDateTime.of(2023, 7, 22, 16, 58, 00);
System.out.println(localDateTime);
}
}
1-2、格式化
public class LocalDateTimeTest {
public static void main(String[] args) {
//获取日期时间
LocalDateTime dateTime = LocalDateTime.now();
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH时mm分钟ss秒");
//2023年07月22日 17时03分钟25秒
System.out.println(dateTimeFormatter.format(dateTime));
}
}
三、工具类封装
//日期时间类封装
public class DateTimeUtil {
//格式:2023-07-22
private static final String DATE_FORMAT = "yyyy-MM-dd";
//格式:2023-07-22 16:50:28
private static final String DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
//格式:2023-07-22 16:50:28
private static final String DATE_TIME_DEF_FORMAT = "yyyy年MM月dd日 HH时mm分钟ss秒";
public static String date(){
return new SimpleDateFormat(DATE_FORMAT).format(new Date());
}
public static String dateTime(){
return new SimpleDateFormat(DATE_TIME_FORMAT).format(new Date());
}
public static String dateDefTime(){
return new SimpleDateFormat(DATE_TIME_DEF_FORMAT).format(new Date());
}
public static void main(String[] args) {
//2023-07-22
System.out.println(DateTimeUtil.date());
//2023-07-22 17:16:43
System.out.println(DateTimeUtil.dateTime());
//2023年07月22日 17时16分钟43秒
System.out.println(DateTimeUtil.dateDefTime());
}
}