- JDK8 的应用:
- 可以使用 Instant 代替 Date,
- LocalDateTime 代替 Calendar,
- DateTimeFormatter 代替 SimpleDateFormat,
- 官方解释:simple beautiful strong immutable thread-safe。
package time;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
/**
* JDK8 的应用:
* 可以使用 Instant 代替 Date,
* LocalDateTime 代替 Calendar,
* DateTimeFormatter 代替 SimpleDateFormat,
* 官方解释:simple beautiful strong immutable thread-safe。
*/
public class TimeDemo {
public static void main(String[] arg){
//获取当地当前日期时间:2019-10-26T18:05:57.144
LocalDateTime dateTime = LocalDateTime.now();
//根据时区获取日期时间
LocalDateTime.now(ZoneId.of("Asia/Ho_Chi_Minh"));
//根据格式获取:2019-10-26
dateTime.format(DateTimeFormatter.ofPattern("YYYY-MM-dd"));
//获取当地当前日期:2019-10-26
LocalDate date = dateTime.toLocalDate();
//根据格式获取:20191026
date.format(DateTimeFormatter.ofPattern("YYYYMMdd"));
//获取时间
LocalTime time = LocalTime.now();
//plus()参数:增加(amountToAdd * unit)时间
date.plus(-1, ChronoUnit.WEEKS);
//获取date是本月第几天
int num = date.getDayOfMonth();
//获取本月第一天的日期
date.plusDays(1 - num);
}
}
String与date类型相互转换
/**
* 将date类型转为String类型
* @param date date类型
* @return 字符串(格式:yyyy-MM-dd HH:mm:ss)
*/
public static String date2String(Date date){
return LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault())
.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
}
/**
* 将(yyyy-MM-dd HH:mm:ss)格式的字符串转换为Date类型
* @param timeStr (yyyy-MM-dd HH:mm:ss)格式的字符串
* @return Date类型
*/
public static Date string2Date(String timeStr){
Date date = new Date();
date.setTime(LocalDateTime.from(
LocalDateTime.parse(timeStr,DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")))
.atZone(ZoneId.systemDefault())
.toInstant()
.toEpochMilli());
return date;
}