Java中时间戳和时间格式的转换

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

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

这种比较常见,使用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 format = 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 转换成目标的时间格式即可
  • 8
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值