1. 程式人生 > >JAVA JDK1.8 時間戳與時間格式化 實用工具類

JAVA JDK1.8 時間戳與時間格式化 實用工具類

這是為了個人的方便,也同時為了大家能更好地瞭解與使用獲取時間的各種方法。

不  廢   話,

上  代  碼 :

import org.springframework.util.Assert;

import java.time.Clock;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;
import java.util.concurrent.TimeUnit;

/**
 * @Author: JCccc
 * @CreateTime: 2018-09-11
 * @Description:
 *           2018-12-04 1.使用DateTimeFormatter替換了部分SimpleDateFormat, 因為執行緒安全問題。
 *                      2.後期這個工具類應該需要優化,因為有Instant,這個專門獲取時間戳的類
 *           2018-12-12 將SimpleDateFormat相關的方法全部去除替換
 */
public class TimeConversionUtil {


   //傳入long時間戳 ,轉換成格式化的String型別時間

    public  String TimeOfLongToStr(long time) {
        Assert.notNull(time, "time is null");
        DateTimeFormatter ftf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        return ftf.format(LocalDateTime.ofInstant(Instant.ofEpochMilli(time), ZoneId.systemDefault()));

    }

    //傳入String型別格式化時間,轉換成Long型別的時間戳

    public  long TimeOfStrToLong(String strTime){
        Assert.notNull(strTime, "time is null");
        DateTimeFormatter ftf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        LocalDateTime parse = LocalDateTime.parse(strTime, ftf);
        return LocalDateTime.from(parse).atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();

    }


    //通過LocalDateTime獲取當前格式化時間

    public  static String getTimeStrNow(){
        //DateTimeFormatter替換了SimpleDateFormat, 因為執行緒安全問題。
        return LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
    }

    //通過LocalDateTime獲取當前格式化時間

    public  static  String getTimeStrNow1(){
        //DateTimeFormatter替換了SimpleDateFormat, 因為執行緒安全問題。
        return LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
    }


    //獲取當前時間戳方法一

    public long getTimeLongOfClock(){

        return Clock.systemDefaultZone().millis();
    }

    //獲取當前時間戳方法二

    public long getTimeLongOfCalendar(){
        Calendar calendar = Calendar.getInstance();

        return calendar.getTimeInMillis();
    }

    //獲取當前時間戳方法三

    public long getTimeLongOfSystem(){

        return System.currentTimeMillis();
    }

    //獲取當前時間戳方法四

    public long getTimeLongOfDate(){

        Date date = new Date();

        return date.getTime();
    }

    //獲取當前時間戳五
    public long getTimeLongOfInstant(){

        Instant now = Instant.now().plusMillis(TimeUnit.HOURS.toMillis(8));
     //   System.out.println("秒數:"+now.getEpochSecond());
     //   System.out.println("毫秒數:"+now.toEpochMilli());
        return now.toEpochMilli();
    }



////工具類除錯
//    public static void main(String[] args) {
////        TimeConversionUtil timeConversionUtil=new TimeConversionUtil();
////        System.out.println(timeConversionUtil.getTimeLongOfCalendar());
////        System.out.println(timeConversionUtil.getTimeLongOfDate());
////        System.out.println(timeConversionUtil.getTimeLongOfInstant());
////        System.out.println(timeConversionUtil.TimeOfLongToStr(timeConversionUtil.getTimeLongOfDate()));
////        System.out.println(TimeConversionUtil.getTimeStrNow());
//          String a=null;
//          Assert.notNull(a,"a是空的");
//
//    }

}


好了,拿去揮霍吧。 (Instant 這個類值得去了解噢。)