写点什么

时间转换不在变 bug

用户头像
卢卡多多
关注
发布于: 刚刚
时间转换不在变bug

额,今天又是被自己打脸的一天, 痛苦的 bug 找我来了,刚改完新的功能,小的问题就出现了。额

还能怎么办,只能默默扛下了所以,还好我的老大是个严慈的人,额;


今天的是关于被时间搞得一天。


背景: 项目中会遇到很多的时间,各种格式,各种种类,但是基本都是时间戳位基础的,泛华出多种的时间日期格式,有的时间对不上,可能是时区不一样,有的用是国际时间(UTC)


UTC

协调世界时,又称世界统一时间、世界标准时间、国际协调时间。由于英文(CUT)和法文(TUC)的缩写不同,作为妥协,简称 UTC。


北京时间:

GM+8

时区+8,是根据地理位置划分的;


一般的国际时间,是比北京早 8 个小时,所以很多国际系统的时间都是采用的 UTC 的格林尼治时间计算的,


在 UTC 的基础上在有特定的格式,我们会很难分辨出时间的格式差距;


比如说显示是:北京时间

GMT: 就是当前


1.如何将 UTC 固定格式的时间,转化成北京时间(时间戳)?

其实要想 UTC 转成北京时间,本质上是将失去的 8 个小时加回来,但是要利用时间戳等效加,不然很容易失误


  • 现将 UTC 固定格式时间,转成固定的时间戳--UTC

  • 将时间戳 GMT+8,加上 8 小时的时间戳,返回

  • 将现有时间戳转化成固定格式输出


日期方法:
/*** UTC秒数转换成北京时间(相差8个时区)*/public static String utcSecondToBJTime(Long utcTime) {Calendar calendar = Calendar.getInstance();calendar.setTimeInMillis(utcTime * 1000L);calendar.set(Calendar.HOUR, calendar.get(Calendar.HOUR) + 8);return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime());}
/*** 固定格式的时间,转成具体的时间戳** @param date_str 时间* @param format 格式* @return*/public static String dateToTimeStamp(String date_str, String format) {try {SimpleDateFormat sdf = new SimpleDateFormat(format);return String.valueOf(sdf.parse(date_str).getTime() / 1000);} catch (Exception e) {log.error("当前时间转换异常", e);}return "";
}

//时间戳展示为固定时间public static String getDateToString(Long time) {if (time.equals(0L)) {return null;}SimpleDateFormat sf = null;Date d = new Date(time);sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");return sf.format(d);}
复制代码


额,搞定,其中要注意,将固定格式转化成的时间戳,可能已经是北京时间,如果不是再去添加;


System.currentTimeMillis()
复制代码

可以直接输出当前的时间戳信息

发布于: 刚刚阅读数: 2
用户头像

卢卡多多

关注

努力寻找生活答案的旅途者 2020.04.12 加入

公众号:卢卡多多,欢迎一起交流学习

评论

发布
暂无评论
时间转换不在变bug