各种日期类型转换
由于java版本的迭代,一个使用java开发的项目中可能出现多种日期对象,例如LocalDateTime、LocalDate、Date,不像C#只有一个DateTime,因此在各种日期格式或者对象之间的转换显得有点复杂,总是记不住,在需要用到时总是需要依靠搜索引擎,有点浪费时间,所以特意把常用的转换场景总结如下:目前写的还不太完善还有很多没有写进去以后慢慢补充
推荐看这篇写的比较全连接
Date–> String
public class Main {
//转换格式
private static final String PATTERN = "yyyy-MM-dd HH-mm-ss";
public static void main(String[] args) {
//创建当前日期
Date date = new Date();
//创建DateFormat实例将PATTERN格式传入
DateFormat dateFormat = new SimpleDateFormat(PATTERN);
//利用DateFormat的format方法来转换Date成String字符串
String format = dateFormat.format(date);
//输出字符串
System.out.println(format);
}
//结果
//2020-12-10 21-24-37
}
String–>Date
public class Main {
//换换格式
private static final String PATTERN = "yyyy-MM-dd HH-mm-ss";
public static void main(String[] args) {
//输入的字符串,格式必须大于等于PATTERN的格式
String dateStr = "2020-12-12 12-00-00";
//提高变量作用域
Date date = null;
//创建DateFormat实例将PATTERN格式传入
DateFormat dateFormat = new SimpleDateFormat(PATTERN);
try {
//调用dateFormat的parse方法将字符串转换成Date实例
date = dateFormat.parse(dateStr);
} catch (ParseException e) {
e.printStackTrace();
}
//输出实例
System.out.println(date);
}
//结果
//Sat Dec 12 12:00:00 CST 2020
}
Instant–>String
public class Main {
//转换格式
private static final String PATTERN = "yyyy年MM月dd日 HH-mm-ss";
public static void main(String[] args) {
//创建DateTimeFormatter实例,因为DateTimeFormatter没有构造方法所以只能通过ofPattern设置格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(PATTERN);
//拿到当前默认时区
formatter = formatter.withZone(ZoneId.systemDefault());
//创建当前时间实例
Instant now = Instant.now();
//利用DateTimeFormatter的format方法进行转换
String format = formatter.format(now);
//输出String格式时间
System.out.println(format);
}
//结果
//2020年12月10日 21-31-52
}
Local Date Time -->String
public class Main {
//转换格式
private static final String PATTERN = "yyyy年MM月dd日 HH时mm分ss秒";
public static void main(String[] args) {
//创建LocalDateTime实例
LocalDateTime now = LocalDateTime.now();
//创建DateTimeFormatter实例,因为DateTimeFormatter没有构造方法所以只能通过ofPattern设置格式
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(PATTERN);
//调用实例的format方法,其实底层还是调用DateTimeFormatter的format方法
String format = now.format(dateTimeFormatter);
//输出结果
System.out.println(format);
}
//结果
//2020年12月10日 22时00分48秒
}
String–>Local Date Time
public class Main {
//转换格式
private static final String PATTERN = "yyyy-MM-dd HH:mm:ss";
public static void main(String[] args) {
//时间字符串
String strTime = "2020-12-12 12:00:00";
//创建DateTimeFormatter实例传入PATTERN
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(PATTERN);
//利用LocalDateTime的parese方法转换格式
LocalDateTime date = LocalDateTime.parse(strTime, dateTimeFormatter);
//输出结果
System.out.println(date);
}
//结果
//2020-12-12T12:00
}
Local Date Time–>Instant
public class Main {
public static void main(String[] args) {
//创建LocalDateTime实例
LocalDateTime now = LocalDateTime.now();
//创建ZonedDateTime实例
ZonedDateTime zonedDateTime = now.atZone(ZoneId.systemDefault());
//ZonedDateTime的toInstant方法转换成Instant实例
Instant instant = zonedDateTime.toInstant();
//打印实例
System.out.println(instant);
}
//结果
//2020-12-10T14:04:00.816Z
}
Local Date Time–>Date
public class Main {
public static void main(String[] args) {
//创建LocalDateTime实例
LocalDateTime now = LocalDateTime.now();
//创建ZonedDateTime实例
ZonedDateTime zonedDateTime = now.atZone(ZoneId.systemDefault());
//ZonedDateTime的toInstant方法转换成Instant实例
Instant instant = zonedDateTime.toInstant();
//利用Date的from方法转换Instant至Date
Date date = Date.from(instant);
//打印实例
System.out.println(date);
}
//结果
//Thu Dec 10 22:38:12 CST 2020
}