关于时间与日历

Posted Ikuta Erika

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于时间与日历相关的知识,希望对你有一定的参考价值。

获取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);
    }

  

 

以上是关于关于时间与日历的主要内容,如果未能解决你的问题,请参考以下文章

为 Blogger 上的博客格式化代码片段 [关闭]

求历代英伟达显卡架构名称

HTTP状态码webview android, WebViewClient

中国历代的学制发展

ffmpeg转码重置文件的开始时间

IOS历代系统简介(上)