utc时间格式转换成北京时间

  sUTC就是世界标准时间,与北京时间相差八个时区。所以只要将UTC时间转化成一定格式的时间,再在此基础上加上8个小时就得到北京时间了。
  首先UTC时间格式先转换成 (时间 Fri Nov 27 2020 10:58:41 GMT+0800 (中国标准时间))这种时间格式 之后就对该时间串进行获取年月日时分秒 之后对获取的时间进行拼接。

1. utc时间格式转换成北京时间(js)

    var UTCDateStr='Fri Nov 27 2020 10:58:41 GMT+0800'
    console.log("UTCDateStr:",UTCDateStr)
    console.log("time:",timeChange(UTCDateStr))
/**
 * @param UTCDateStr
 * @returns {string}
 */
function timeChange(UTCDateStr) {
    if (!UTCDateStr) {
        return '-';
    }
    function formatFunc(str) {
        return str > 9 ? str : '0' + str
    }
    var date2 = new Date(UTCDateStr);
    console.log('时间', date2)
    var year = date2.getFullYear();
    var mon = formatFunc(date2.getMonth() + 1);
    var day = formatFunc(date2.getDate());
    var hour = date2.getHours();
    var noon = hour >= 12 ? 'PM' : 'AM'; // 判断是上午还是下午
    hour = hour >= 12 ? hour - 12 : hour; // 12小时制
    hour = formatFunc(hour);
    var min = formatFunc(date2.getMinutes());
    var sec = formatFunc(date2.getSeconds());
    var dateStr = year + '-' + mon + '-' + day + ' ' + hour + ':' + min + ':' + sec;
    return dateStr;
}

在这里插入图片描述

2. utc时间格式转换成北京时间(java)

  UTCToCST("2017-11-27T03:16:03.944Z",
           "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
  public  void UTCToCST(String UTCStr, String format) {
        try {
            Date date = null;
            SimpleDateFormat sdf = new SimpleDateFormat(format);
            date = sdf.parse(UTCStr);
            System.out.println("UTC时间: " + date);
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            calendar.set(Calendar.HOUR, calendar.get(Calendar.HOUR) + 8);
            //calendar.getTime() 返回的是Date类型,
            // 也可以使用calendar.getTimeInMillis()获取时间戳
            Log.e("time--","UTCStr: " + UTCStr);
            Log.e("time--","北京时间: " + calendar.getTime());
        } catch (ParseException e) {
            throw new RuntimeException(e);
        }
    }
}

在这里插入图片描述

你可能感兴趣的:(JavaScript,javascript,java)