码迷,mamicode.com
首页 > 其他好文 > 详细

关于时间与日历

时间:2018-03-08 12:06:32      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:col   find   ogg   turn   .sql   local   ==   static   ring   

获取UTC时间,但是设置了全局的TimeZone,导致后面的时间都是以此Zone为准:

TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));
Calendar cal = Calendar.getInstance();
Date date = cal.getTime();

用时差计算UTC时间:

    public static Date getCurrentUTCTime() {
        Calendar calendar = Calendar.getInstance();
        int offset = calendar.get(Calendar.ZONE_OFFSET); 
        calendar.add(Calendar.MILLISECOND, -offset);
        return calendar.getTime();
    }

 MySql数据库中的日期类型字段,对应java中的Date类应该使用java.sql.Date或者java.sql.Timestamp,都是继承了java.util.Date.

  注:java.sql.Date只精确到年月日

UTC转Local时间:

    /**
     * 功能描述: 数据库中的utc时间转换为指定格式本地时间
     */
    public static String utcToLocal(Date utc, String format) {
        if (null == utc) {
            return null;
        }
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        String utcStr = sdf.format(utc);
        return utcToLocal(utcStr, format, format);
    }

    /**
     * 功能描述: 将指定格式的UTC时间转为指定格式的本地时间字符串
     */
    public static String utcToLocal(String utcStr, String utcFormat, String localFormat) {
        SimpleDateFormat sdf = new SimpleDateFormat(utcFormat);
        sdf.setTimeZone(TimeZone.getTimeZone(TIMEZONE_UTC));
        Date utc = null;
        try {
            utc = sdf.parse(utcStr);
        } catch (ParseException e) {
            LOGGER.error("parse find wrong.", e);
        }
        sdf = new SimpleDateFormat(localFormat);
        sdf.setTimeZone(TimeZone.getDefault());
        return sdf.format(utc);
    }

  

 

关于时间与日历

标签:col   find   ogg   turn   .sql   local   ==   static   ring   

原文地址:https://www.cnblogs.com/fengdeng/p/8527029.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!