JDK8的时间类简单使用

  • 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;
    }

猜你喜欢

转载自blog.csdn.net/weixin_43792738/article/details/102788977