java.util.Calendar与java.util.Date的互相转换

最近在一个需求中,有一个将java.util.Date与java.util.Calendar互相转换的要求,由于不常用Calendar,遂将转换的代码整理至此,方便查阅。

本地时间转为UTC时间 Calendar => Date

public static Date calendar2Utcdate(Calendar calendar ) {
         /** 取得时间偏移量 */
        int zoneOffset = calendar.get(java.util.Calendar.ZONE_OFFSET);
        /** 取得夏令时差 */
        int dstOffset = calendar.get(java.util.Calendar.DST_OFFSET);
        /** 从本地时间里扣除这些差量,即可以取得UTC时间*/
        // calendar.add(java.util.Calendar.MILLISECOND, -(zoneOffset + dstOffset));
        /** 取得的时间就是UTC标准时间 */
        Date utcDate=new Date(calendar.getTimeInMillis());
        /** 将时间转为指定格式2019-06-21T05:46:02.231Z */
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US);
        System.out.println(simpleDateFormat.format(utcDate));
        return utcDate;
}

Date String => Date

/**
     * string  转 date
     * @param dateString
     * @return
     */
    public static Date str2Date(String dateString) {
        SimpleDateFormat sdFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        Date date = null;
        try {
            date = sdFormat.parse(dateString);
        } catch (ParseException e) {
            e.printStackTrace();
        }

        return date;
}

Date => Calendar(UTC)

public static Calendar date2Calendar(Date date) {
    Calendar calendar = Calendar.getInstance(Locale.US);
    calendar.setTime(date);
    return calendar;
}        

LocalDateTime => Date

Date.from((##.atZone(ZoneId.systemDefault())).toInstant())

 

posted @ 2020-04-30 16:31  像风一样无影无起  阅读(659)  评论(0)    收藏  举报