1、在jdk8.0之前的日期时间的使用
1.1、常用方法:
long begin = System.currentTimeMillis(); //获取当前系统时间对应的毫秒值
Date date = new Date();
System.out.println(date); //获取当前时间和日期
1.2、SimpleDateFormat:用于日期时间的格式化和解析
格式化:日期 —> 字符串(format)
解析:字符串 —> 日期(parse)
测试代码如下所示:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test {
public static void main(String[] args) {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月DD日 HH:mm:ss ");
String date1 = sdf.format(date);
System.out.println(date1);
try {
date = sdf.parse(date1);
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println(date);
}
}
输出结果:
2023年08月222日 18:47:03 Thu Aug 10 18:47:03 CST 2023
1.3、Calendar(日历,抽象类)
import java.util.Calendar;
public class Test {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance(); //获取Calendar对象
//测试方法
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
//②、常用方法: get(int field) / set(int field,xx) / add(int field ,xx) / getTime() / setTime()
}
}
2、例题:
2.1、如何将一个java.util.Date的实例转换为java.sql.Date的实例?
import java.util.Date;
public class Test1 {
public static void main(String[] args) {
Date date1 = new Date();
java.sql.Date date2 = new java.sql.Date(date1.getTime()); //转换
System.out.println(date2); //输出结果:2023-08-11
}
}
2.2、将控制台获取的年月日(比如: 2023-8-11)的字符串数据,保存在数据库中。(简化为得到java.sql.Date的对象,此对象对应的时间为2023-8-11)
public static void test02(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Scanner sc = new Scanner(System.in);
System.out.print("请输入年份:");
String year = sc.next();
System.out.print("请输入月份:");
int month = sc.nextInt();
System.out.print("请输入天数:");
int day = sc.nextInt();
String date = year + "-" + month + "-" + day;
Date date1 = null;
try {
date1 = sdf.parse(date);
} catch (ParseException e) {
e.getStackTrace();
}
java.sql.Date date2 = new java.sql.Date(date1.getTime()); //转换
System.out.println(date2); //输出
输出结果:
请输入年份:2023 请输入月份:8 请输入天数:11 2023-08-11
2、在jdk8.0之后的日期时间的使用
2.1、之前时间日期存在的问题:
可变性:日期和时间这样的类应该是不可变的。
偏移性: Date中的年份是从1900开始的,而月份都从0开始。
格式化:格式化只对Date有用,Calendar则不行。
此外,它们也不是线程安全的;不能处理闰秒等。
2.2.1、本地日期时间:LocalDate、LocalTime、LocalDateTime
public static void test03(){
LocalDate localDate = LocalDate.now();
LocalTime localTime = LocalTime.now();
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println(localDate); //2023-08-11
System.out.println(localTime); //18:28:50.115896700
System.out.println(localDateTime); //2023-08-11T18:28:50.116898500
//of指定年月日或者其他时间,没有偏移量
LocalDate localDate1 = LocalDate.of(2002,6,28);
System.out.println(localDate1);
}
2.2.2、Instant(和Date相似):时间线上的一个瞬间点,这可能被用来记录应用程序中的事件时间戳。
public static void test05(){
Instant instant = Instant.now();
System.out.println(instant); //以伦敦时间为准
}
2.2.3、DateTimeFormatter(类似于SimpleDateFormat):用于格式化和解析LocalDate、LocalTime、LocalDateTime
public static void test06(){
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss"); //自定义格式化
LocalDateTime localDateTime = LocalDateTime.now();
String format = dtf.format(localDateTime);
System.out.println(format); //2023-08-11 07:05:37
}
标签:常用,java,基础,System,println,API,Date,public,out
From: https://blog.51cto.com/u_15433911/7051715