Java8时间处理方式

Java8时间处理方式

package com.example.demo.timeuser;

import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.concurrent.TimeUnit;

/**
 * @author pda
 * @date 2019-11-24
 */
public class timeuser {

    /**
     * instant
     */
    private static Instant instant = Instant.now();
    /**
     * time
     */
    private static LocalTime localTime = LocalTime.now();
    /**
     * date
     */
    private static LocalDate localDate = LocalDate.now();
    /**
     * date and time
     */
    private static LocalDateTime localDateTime = LocalDateTime.now();

    /**
     * using instant
     */
    private static void usingInstant(){
        // Instant是UTC计算,理应加8
        Instant now = Instant.now().plusMillis(TimeUnit.HOURS.toMillis(8));
        System.out.println(now);
        // Instant获取秒数
        System.out.println(now.getEpochSecond());
        // Instant获取毫秒数
        System.out.println(now.toEpochMilli());
        // 毫秒转Instant类
        Instant instant = Instant.ofEpochMilli(now.toEpochMilli());
        System.out.println(instant);
        // date 转 Instant
        Instant date = new Date().toInstant();
    }

    /**
     * using localTime
     */
    private static void usingLocalTime(){
        // 当前时间
        LocalTime localTime = LocalTime.now();
        System.out.println(localTime);
        // 获取当前时间
        System.out.println(localTime.getHour()+ ":" + localTime.getMinute() + ":" + localTime.getSecond());
        // 获取一小时前,分钟,秒同理,加减同理
        System.out.println(localTime.plusHours(1).minusHours(2));
        // 格式化日期
        System.out.println(localTime.format(DateTimeFormatter.ofPattern("HH:mm:ss")));
    }

    /**
     * using LocalDate
     */
    private static void usingLocalDate(){
        // 输出日期
        System.out.println(localDate);
        // 获取年月日
        System.out.println(localDate.getYear() + "-" + localDate.getMonth().getValue() + "-" + localDate.getDayOfMonth());
        // 格式化日期
        System.out.println(localDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
        // 加减日期
        System.out.println(localDate.minusDays(50));
    }

    /**
     * using LocalDateTime
     */
    private static void usingLocalDateTime(){
        // 时间
        System.out.println(localDateTime);
        // 格式化
        System.out.println(localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
        // Instant 转 LocalDateTime
        LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.now(), ZoneOffset.systemDefault());
    }

    public static void main(String[] args){
        //usingInstant();
        //usingLocalTime();
        //usingLocalDate();
        //usingLocalDateTime();
    }
}

使用SimpleDateFormat是线程不安全的,如果每次都需要new出一个,会造成不必要的浪费。即便使用ThreadLocal的变量也还是不够优化的处理。实际上还有DateUtils等各个第三方的工具可以进行处理,但是Java8已经给出了最合理的解决方式,而且还有更多合理的API可以使用。数据库的timestamp对应着LocalDateTime类配合着使用。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值