Gson的一些使用

Date 要指定时区

Date对象里存的是自格林威治时间( GMT)1970年1月1日0点至Date对象所表示时刻所经过的毫秒数。
Date里存放的毫秒数是与时区无关的。
从字符串中解析时间的正确作法是:指定时区来解析。示例如下:

    String timeStr = "2017-8-24 11:17:10"; // 字面时间
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    sdf.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai")); // 设置北京时区  
    Date d = sdf.parse(timeStr); //date里面的毫秒数和时区无关。
    System.out.println(sdf.format(d) + ", " + d.getTime());

将字符串表示的时间转换成另一个时区的时间字符串
正确的做法是:
1.将字符串按原时区转换成Date对象;
2.将Date对象格式化成目标时区的时间。

String timeStr = "2017-8-24 11:17:10"; // 字面时间
SimpleDateFormat bjSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
bjSdf.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
Date date = bjSdf.parse(timeStr);  // 将字符串时间按北京时间解析成Date对象
 
SimpleDateFormat tokyoSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  // 东京
tokyoSdf.setTimeZone(TimeZone.getTimeZone("Asia/Tokyo"));  // 设置东京时区
System.out.println("北京时间: " + timeStr +"对应的东京时间为:"  + tokyoSdf.format(date));

输出为:
北京时间:2017-8-24 11:17:10对应的东京时间为:2017-08-24 12:17:10

你可能感兴趣的:(Java)