Java 时间格式 new Date()

最近做股票数据项目所以接触到时间格式转换问题,以下为个人经验以做参考:

   因为是用JAVA所以必须用到Date这个类。

    java.util.Date 在API中描述为代表一个特定的瞬间时间,以毫秒精度。

在项目中我们通过Sockect实际拿到的数据格式[1438725620,852,4156,0,0,0],分别是时间,价格,交易额等其他数据。可以看出这里时间和我们要显示的时间2015:08:06:14:09:54是有区别的。这个时候我们就要拿出new Date()来转换。

        System.out.println(new Date(1438725620l));

     输出:Sat Jan 17 23:38:45 CST 1970

一看这么复杂不行啊,于是我们必须再用SimpleDateFormat美化下。

     SimpleDateFormat format = new SimpleDateFormat("yyyy:MM:dd:HH:mm");

     System.out.println(format.format(new Date(1438725620l)));

    输出:1970:01:17:23:38:45

结果看上去是比上面能接受了,但项目检查一看1970年?搞什么啊?(项目中踩过的坑啊!)

    我们用System.currentTimeMillis()取出系统输出时间做比较

    1438842068454(系统输出)
    1438725620    (项目获取)

  发现好像少了几位数字,所以时间变小了。原来我们在项目中获取的时间被截取毫秒,所以看上去时间变短了。这样*1000不就解决问题了。

  System.out.println(format.format(new Date(1000*1438725620l)));

这才是我们想要的结果  2015:08:05:06:00:20

  注意深坑:    java.util.Date(long date);传入的是long型的数据。如果你获取的数据是int型一定要记得强转。不然*1000会溢出;然后在转成时间数据时会被截取丢失。。。





   

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值