当前位置: 首页 > news >正文

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 String getTransTime(String timeStr) {
        
        DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-M-dd HH:mm:ss");
        LocalDateTime date = LocalDateTime.parse(timeStr, df);
        DateTimeFormatter f2 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String transTime = f2.format(date);

        return transTime;
    }


工具类调试
//    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 这个类值得去了解噢。)

相关文章:

  • 单例模式 之内部类延迟加载,(多)线程安全
  • Springboot 用session监听器统计在线用户数量
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • JAVA 责任链设计模式
  • JAVA回调函数简单讲解 CallBack
  • JAVA HttpClient 远程调用接口doGet、doPost工具类
  • JAVA 接口签名sign生成 工具类
  • mybatis-config配置文件各项简单介绍
  • Springboot整合Mybatis增删查改、连接MYSQL数据库及配置druid连接池
  • JAVA 模板设计模式
  • Springboot 最简单的结合MYSQL数据实现EXCEL表格导出及数据导入
  • Springboot中使用GSON报错 An attempt was made to call the method com.google.gson.GsonBuilder.setLenient
  • IDEA @AutoWired注入bean 出现红色波浪线
  • JAVA 最常用实用的正则表达式校验
  • Springboot 整合WebFlux 实现RESTFUI风格API 及简单的CRUD
  • [笔记] php常见简单功能及函数
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • 〔开发系列〕一次关于小程序开发的深度总结
  • ES6之路之模块详解
  • golang中接口赋值与方法集
  • JavaScript 基本功--面试宝典
  • Java多态
  • Java教程_软件开发基础
  • js学习笔记
  • Less 日常用法
  • Linux快速复制或删除大量小文件
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • 阿里云Kubernetes容器服务上体验Knative
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 赢得Docker挑战最佳实践
  • 在electron中实现跨域请求,无需更改服务器端设置
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • ​人工智能书单(数学基础篇)
  • #android不同版本废弃api,新api。
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (4)logging(日志模块)
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (转)JAVA中的堆栈
  • (转)拼包函数及网络封包的异常处理(含代码)
  • **PHP二维数组遍历时同时赋值
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • .Net开发笔记(二十)创建一个需要授权的第三方组件
  • /proc/interrupts 和 /proc/stat 查看中断的情况
  • @Autowired标签与 @Resource标签 的区别
  • [ C++ ] STL_list 使用及其模拟实现
  • [ C++ ] STL_stack(栈)queue(队列)使用及其重要接口模拟实现
  • [ vulhub漏洞复现篇 ] Grafana任意文件读取漏洞CVE-2021-43798