>웹 프론트엔드 >JS 튜토리얼 >타임스탬프를 시간 형식으로 변환하는 js 코드에 대한 자세한 설명

타임스탬프를 시간 형식으로 변환하는 js 코드에 대한 자세한 설명

不言
不言원래의
2018-08-13 17:30:201668검색

이 글은 js를 사용하여 타임스탬프를 시간 형식으로 변환하는 코드에 대한 자세한 설명을 제공합니다. 필요한 친구들이 참고할 수 있기를 바랍니다.

프런트엔드 개발 과정에서는 사용자가 탐색할 수 있도록 타임스탬프를 표준 시간 형식으로 변환해야 하는 경우가 많습니다. 메소드 라이브러리를 사용하지 않고 빠르고 효과적으로 구현하는 방법은 무엇입니까? 아래에서는 두 가지 방법을 소개합니다.

기존 방법

기본적으로 사용되는 방법은 Date 방식을 사용하여 연, 월, 일, 시, 분, 초를 하나씩 계산한 후 연결하는 것입니다. 필요한 시간 형식 문자열로 변환합니다.

function transformTime(timestamp = +new Date()) {
    if (timestamp) {
        var time = new Date(timestamp);
        var y = time.getFullYear(); //getFullYear方法以四位数字返回年份
        var M = time.getMonth() + 1; // getMonth方法从 Date 对象返回月份 (0 ~ 11),返回结果需要手动加一
        var d = time.getDate(); // getDate方法从 Date 对象返回一个月中的某一天 (1 ~ 31)
        var h = time.getHours(); // getHours方法返回 Date 对象的小时 (0 ~ 23)
        var m = time.getMinutes(); // getMinutes方法返回 Date 对象的分钟 (0 ~ 59)
        var s = time.getSeconds(); // getSeconds方法返回 Date 对象的秒数 (0 ~ 59)
        return y + '-' + M + '-' + d + ' ' + h + ':' + m + ':' + s;
      } else {
          return '';
      }
}
transformTime(); // "2018-8-8 12:9:12"

기존 메소드의 개선된 버전

위 변환 메소드는 타임스탬프를 Date 인스턴스로 변환하고 Date 해당 메소드를 사용하여 해당 연, 월, 일을 가져옵니다. , 시, 분, 초 시간 형식이 '2018-8-8 12:9:12' 인데 좀 어색하네요. 우리가 일반적으로 사용하는 시간 형식으로 변환하려면 10보다 작은 값 앞에 문자열 '0'을 추가하여 '2018-08-08 12:09'라는 시간 형식으로 변환하는 것도 주의해야 합니다. 12'.

function transformTime(timestamp = +new Date()) {
    if (timestamp) {
        var time = new Date(timestamp);
        var y = time.getFullYear();
        var M = time.getMonth() + 1;
        var d = time.getDate();
        var h = time.getHours();
        var m = time.getMinutes();
        var s = time.getSeconds();
        return y + '-' + addZero(M) + '-' + addZero(d) + ' ' + addZero(h) + ':' + addZero(m) + ':' + addZero(s);
      } else {
          return '';
      }
}
function addZero(m) {
    return m < 10 ? '0' + m : m;
}
transformTime(); // "2018-08-08 12:09:12"

10 미만으로 반환된 시간 값을 처리하고, 'addZero' 메소드를 사용하여 문자열에 '0'을 추가하여 형식이 대칭이 되도록 합니다.

New Ideas

타임스탬프를 필요한 시간 형식으로 변환하기 위해 두 개의 함수를 작성했는데, 이를 추가하면 최대 10줄이 넘습니다. 얼마 전 부서장님께서 다른 방법을 알려주셨는데요. 코드 한 줄이 타임스탬프를 'YYYY-MM-DD HH:mm:ss' 형식으로 변환해 주니 코드가 즉시 많이 간소화되었습니다. 더 자세히 살펴보겠습니다. 코드

function time(time = +new Date()) {
    var date = new Date(time + 8 * 3600 * 1000); // 增加8小时
    return date.toJSON().substr(0, 19).replace('T', ' ');
}
time(); // "2018-08-09 18:25:54"

Date의 'toJSON' 메서드는 실제로 'toISOString' 메서드를 사용한 결과인 그리니치 표준시의 JSON 형식 문자열을 반환합니다. 문자열은 '2018-08-09T10:20:54.396Z' 형식입니다. 베이징 시간으로 변환하려면 문자열의 처음 19자리를 공백으로 바꿔야 합니다. 즉, 시간 형식이 필요합니다.

function time(time = +new Date()) {
    var date = new Date(time + 8 * 3600 * 1000);
    return date.toJSON().substr(0, 19).replace('T', ' ').replace(/-/g, '.');
}
time(); // "2018.08.09 18:25:54"

시간 형식의 '-'를 '.' 또는 기타 기호로 변경할 수 있습니다. 이전 방법에 비해 이 방법은 이전보다 코드를 조금 더 절약하고 읽기도 훨씬 쉽습니다. 시간 형식에 밀리초가 필요한 경우 문자열의 처음 23자리만 가져와서 위와 같이 바꾸기 메서드로 바꾸면 됩니다.

관련 권장사항:

js를 사용하여 Excel을 내보내고 가져오는 방법은 무엇인가요? js를 사용하여 Excel을 가져오고 내보내는 방법(순수 코드)

js(코드)에서 드롭다운 메뉴를 좌우로 이동하는 방법 #🎜 🎜#

# 🎜🎜#js가 setInterval 타이머 메소드를 사용하여 캐러셀 이미지를 구현하는 방법(전체 코드)

위 내용은 타임스탬프를 시간 형식으로 변환하는 js 코드에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.