博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java中时间戳和时间格式的转换
阅读量:3891 次
发布时间:2019-05-23

本文共 2089 字,大约阅读时间需要 6 分钟。

在项目中经常会遇到各种时间类型和时间戳之间的转换,现整理一番:

时间戳转换为指定格式时间

这种比较常见,使用System.currentTimeMillis()可获取当前毫秒级时间戳,然后指定转换格式即可:

Long time = System.currentTimeMillis();  //获取当前时间SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String date = format.format(time);//注意这里返回的是string类型String nowMs = format.format(new Date());//上面这种方法也可以获取指定格式的时间字符串,然后new Date()中可以传递Long型参数,比如像获取当前时间一小时之前的时间,就可以用这种方式获取:String nowMs = format.format(new Date(curTime - TimeUnit.HOURS.toMillis(1)));//使用下面这种方式可以更快的获取yyyy-MM-dd HH:mm:ss类型的时间字符串:Timestamp date = new Timestamp(System.currentTimeMillis() + 1000);timestamp类型的格式为yyyy-MM-dd HH:mm:ss.SSS,然后使用substring(0, 19)即可获取精确到秒的时间格式

指定格式的时间转换为时间戳

将指定格式的时间转换为时间戳:SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//首先定义待转换的时间格式Date date = format.parse(time);//将带转换的时间字符串转换为date类型,然后使用getTime即可获取对应的时间戳//如果是Date类型的时间,直接使用date.getTime就可以获得其对应的毫秒级时间戳:Long time = date.getTime();//Date类中就保存有毫秒时间戳变量

格林威治时间转换

Date类型的时间打印出来的是格林威治时间类型

public static void main(String[] args) {
System.out.println(new Date()); System.out.println((new Date()).toString()); }/*输出结果为: Fri Jul 31 18:46:15 CST 2020 Fri Jul 31 18:46:15 CST 2020*、

将指定格式的时间字符串转换为格林威治时间:

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        String time = "2020-07-31 18:49:00";        Date date = format.parse(time));//转换成格林威治时间        Long timeLongNum = date.getTime();//转换为时间戳

mysql中时间类型共有三种:date,dateTime和timestamp

项目中常用的时间类型为timestamp,如果java类中映射的对象的类型为date(这里的类型转换是mybatis进行的)

date:mysql中date类型是java.sql.Date类型的,用java操作数据库时可以用java.util.Date类型的字段插入。注意,mysql中date类型只能存“2020-07-31”这种格式的,像“2020-07-31 10:01:29”这种格式的日期是不能存的,mysql会把后面的时间舍掉,只保留日期

datetime:此类型用于存“2020-07-31 10:01:29”这种格式的日期,例如用上文的format.format(TimeNum)返回的时间字符串

timestamp:时间戳,和dateTime一样都可以用来表示"yyyy-MM-dd HH:mm:ss"这样的时间,主要区别是存储方式不同:
timestamp把客户端插入的时间从当前时区转化为UTC(世界标准时间/格林威治时间)进行存储。查询时,将其又转化为客户端当前时区进行返回。
dateTime则不做任何改变,基本上是原样输入和输出

不同时间格式之间转换

SimpleDateFormat formatMs= new SimpleDateFormat("yyyy-MM-dd_HH:mm_ss:SSS"); Date date = formatMs.parse(targetTime);//然后再使用目标格式将date 转换成目标的时间格式即可

转载地址:http://dvphn.baihongyu.com/

你可能感兴趣的文章
80 多个 Linux 系统管理员必备的监控工具
查看>>
OOD的原则
查看>>
Tool to trace local function calls in Linux
查看>>
Linux 下查询 DNS 服务器信息
查看>>
ulimit 里的 file size 的 block 单位是多少?
查看>>
linux下查看端口对应的进程
查看>>
将 gdb 用作函数跟踪器 (Function Tracer)
查看>>
原 GCC一些有用的技巧
查看>>
yum 变量追加的方法
查看>>
2倍速的下一代Bluetooth,「Bluetooth 5」发布
查看>>
Top 10 “Yum” installables to be productive as a developer on Red Hat Enterprise Linux
查看>>
[小技巧] Vim 如果去除 “existing swap file” 警告
查看>>
如何在linux下检测内存泄漏
查看>>
十年生聚,Vim 8.0 发布了!
查看>>
【演歌】加賀の女 歌词翻译
查看>>
東京音頭 (东京音头) 歌词翻译
查看>>
Windows 7 下登录界面里 Ctrl + Alt + Del 无法使用
查看>>
惠山赏菊 & 梅园赏桂
查看>>
[小技巧] cat /proc/modules 显示的地址为 0
查看>>
[游戏] chrome 的小彩蛋
查看>>