- 将Date在本机转换,传输到目标服务器进行展示操作(传输Date,但Date时区不变,只是展示的值变换)
-
Date date = new Date();//获取本地时间(包含本地时区) String zoneId = "Asia/Shanghai";//需要转换的目标时区 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); simpleDateFormat.setTimeZone(TimeZone.getTimeZone(zoneId)); //将本地时间通过目标时区转为字符串 String strDate = simpleDateFormat.format(date); System.out.println(strDate); simpleDateFormat.setTimeZone(TimeZone.getTimeZone(ZoneId.systemDefault()));//ZoneId.systemDefault 本地时区 //将字符串通过本地时间转为Date(虽然Date的时区依旧是本地时区,但是Date的值变为了此时此刻目标时区的值,可以直接传输(json字符串或其他格式进行展示)) Date parse = simpleDateFormat.parse(strDate); System.out.println(parse);
-
- 使用JDK8新特性中ZonedDateTime进行传输(直接修改时区,可直接传输)
-
Date date = new Date();//本地时间 String zoneId = "Asia/Shanghai";
//zonedDateTime即为最终结果,包含目标时区的信息以及正确的时间 ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(date.toInstant(), ZoneId.of(zoneId));
-
- 还有什么更有效的方法,欢迎留言