java8时间api和mysql集成的坑

来源:互联网 发布:窗口编程 编辑:程序博客网 时间:2024/05/21 17:30

java8时间api和mysql集成的坑

代码

Timestamp.valueOf(LocalDateTime.now) 

现象是时间相差14个小时,想了下,相差14个小时应该是芝加哥时间

跟踪jdk源码,ZoneId

    /**     * A map of zone overrides to enable the short time-zone names to be used.     * <p>     * Use of short zone IDs has been deprecated in {@code java.util.TimeZone}.     * This map allows the IDs to continue to be used via the     * {@link #of(String, Map)} factory method.     * <p>     * This map contains a mapping of the IDs that is in line with TZDB 2005r and     * later, where 'EST', 'MST' and 'HST' map to IDs which do not include daylight     * savings.     * <p>     * This maps as follows:     * <ul>     * <li>EST - -05:00</li>     * <li>HST - -10:00</li>     * <li>MST - -07:00</li>     * <li>ACT - Australia/Darwin</li>     * <li>AET - Australia/Sydney</li>     * <li>AGT - America/Argentina/Buenos_Aires</li>     * <li>ART - Africa/Cairo</li>     * <li>AST - America/Anchorage</li>     * <li>BET - America/Sao_Paulo</li>     * <li>BST - Asia/Dhaka</li>     * <li>CAT - Africa/Harare</li>     * <li>CNT - America/St_Johns</li>     * <li>CST - America/Chicago</li>     * <li>CTT - Asia/Shanghai</li>     * <li>EAT - Africa/Addis_Ababa</li>     * <li>ECT - Europe/Paris</li>     * <li>IET - America/Indiana/Indianapolis</li>     * <li>IST - Asia/Kolkata</li>     * <li>JST - Asia/Tokyo</li>     * <li>MIT - Pacific/Apia</li>     * <li>NET - Asia/Yerevan</li>     * <li>NST - Pacific/Auckland</li>     * <li>PLT - Asia/Karachi</li>     * <li>PNT - America/Phoenix</li>     * <li>PRT - America/Puerto_Rico</li>     * <li>PST - America/Los_Angeles</li>     * <li>SST - Pacific/Guadalcanal</li>     * <li>VST - Asia/Ho_Chi_Minh</li>     * </ul>     * The map is unmodifiable.     */    public static final Map<String, String> SHORT_IDS;

结果CST是芝加哥时间,然后去mysql中看了一下

mysql> show variables like "%time_zone%";+------------------+--------+| Variable_name    | Value  |+------------------+--------+| system_time_zone | CST    || time_zone        | SYSTEM |+------------------+--------+2 rows in set (0.00 sec)mysql> select curtime();+-----------+| curtime() |+-----------+| 20:14:19  |+-----------+1 row in set (0.00 sec)

坑了吧,这里CST是China Standard Time,最后用了SimpleDateFormat加ThreadLocal搞定的

0 0
原创粉丝点击