Java 中时间戳和时间格式的转换unix时间戳转换日期格式
在项⽬中经常会遇到各种时间类型和之间的转换,现整理⼀番:
时间戳转换为指定格式时间
这种⽐较常见,使⽤System.currentTimeMillis()可获取当前毫秒级时间戳,然后指定转换格式即可:
指定格式的时间转换为时间戳
格林威治时间转换
Date类型的时间打印出来的是格林威治时间类型
将指定格式的时间字符串转换为格林威治时间:
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则不做任何改变,基本上是原样输⼊和输出不同时间格式之间转换
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 类型的时间,直接使⽤Time 就可以获得其对应的毫秒级时间戳:
Long time = date .getTime ();//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 ();//转换为时间戳
SimpleDateFormat formatMs=new SimpleDateFormat("yyyy-MM-dd_HH:mm_ss:SSS");
Date date = formatMs.parse(targetTime);//然后再使⽤⽬标格式将date 转换成⽬标的时间格式即可
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论