java UTC时间和local时间相互转换
Posted 波神
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java UTC时间和local时间相互转换相关的知识,希望对你有一定的参考价值。
1、local时间转UTC时间
/** * local时间转换成UTC时间 * @param localTime * @return */ public static Date localToUTC(String localTime) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date localDate= null; try { localDate = sdf.parse(localTime); } catch (ParseException e) { e.printStackTrace(); } long localTimeInMillis=localDate.getTime(); /** long时间转换成Calendar */ Calendar calendar= Calendar.getInstance(); calendar.setTimeInMillis(localTimeInMillis); /** 取得时间偏移量 */ int zoneOffset = calendar.get(java.util.Calendar.ZONE_OFFSET); /** 取得夏令时差 */ int dstOffset = calendar.get(java.util.Calendar.DST_OFFSET); /** 从本地时间里扣除这些差量,即可以取得UTC时间*/ calendar.add(java.util.Calendar.MILLISECOND, -(zoneOffset + dstOffset)); /** 取得的时间就是UTC标准时间 */ Date utcDate=new Date(calendar.getTimeInMillis()); return utcDate; }
2、UTC时间转local时间
/** * utc时间转成local时间 * @param utcTime * @return */ public static Date utcToLocal(String utcTime){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); sdf.setTimeZone(TimeZone.getTimeZone("UTC")); Date utcDate = null; try { utcDate = sdf.parse(utcTime); } catch (ParseException e) { e.printStackTrace(); } sdf.setTimeZone(TimeZone.getDefault()); Date locatlDate = null; String localTime = sdf.format(utcDate.getTime()); try { locatlDate = sdf.parse(localTime); } catch (ParseException e) { e.printStackTrace(); } return locatlDate; }
以上是关于java UTC时间和local时间相互转换的主要内容,如果未能解决你的问题,请参考以下文章
跨平台 C++:使用历史 tzdata 与 UTC/本地时间相互转换