타임 스탬프를 자바 스크립트에서 인간 날짜로 변환하는 기능


82

이 타임 스탬프 13820863940002013-10-18 08:53:14자바 스크립트의 함수 를 사용 하도록 변환하는 방법은 무엇입니까? 현재이 기능이 있습니다.

function cleanDate(d) {return new Date(+d.replace(/\/Date\((\d+)\)\//, '$1'));}

10
여기에 모든 해답 외에, 현재 처리 JS 날짜 / 시간에서 사실상의 표준은 moment.js 아무도 여기에 언급되지 놀라게하다
alonisser

2
@alonisser-아마도 시간 값을 날짜로 변환하는 것이 사소하기 때문일 것입니다. 포맷팅도 특별히 어렵지 않습니다.
RobG 2014

답변:


128

1382086394000 은 1970-01-01T00 : 00 : 00Z 이후의 밀리 초 수인 시간 값일 수 있습니다. Date 생성자를 사용하여 ECMAScript Date 객체를 생성하는 데 사용할 수 있습니다 .

var d = new Date(1382086394000);

그것을 읽을 수있는 것으로 변환하는 방법은 당신에게 달려 있습니다. 출력으로 보내기 만하면 일반적으로 동일한 시스템 시간을 사람이 읽을 수있는 형식 으로 인쇄하는 내부 (그리고 완전히 구현에 따라 다름) toString 메서드 *를 호출해야 합니다.

Fri Oct 18 2013 18:53:14 GMT+1000 (EST) 

ES5에는 몇 가지 다른 기본 제공 형식 옵션이 있습니다.

등등. 대부분은 구현에 따라 다르며 브라우저마다 다릅니다. 모든 브라우저에서 동일한 형식을 원하면 날짜 형식을 직접 지정해야합니다. 예 :

alert(d.getDate() + '/' + (d.getMonth()+1) + '/' + d.getFullYear());

* Date.prototype.toString 의 형식은 ECMAScript 2018 에서 표준화되었습니다 . 모든 구현에서 유비쿼터스가되기까지는 다소 시간이 걸릴 수 있지만 적어도 더 일반적인 브라우저가 지금은이를 지원합니다.


togmtstring ()도 있지만 더 이상 사용되지 않습니다. JS에서와 같이 tolocalestring ()이 왜 있는지 알지 못합니다. 모든 것이 브라우저에서 로컬입니다. 아니면 toLocaleString 이 Nodejs와 분리되어 있습니까? 서버 측 JS를 사용하고 클라이언트와 서버 간의 시간대가 다른 경우 클라이언트 영역을 얻습니까?
Timo

1
@ timo— "로케일"의 사용은 사용자의 서식 기본 설정과 일치하는 형식을 표시하려는 방법에 대한 잘못된 이름입니다. 불행히도 그것은 선호하는 형식의 특히 좋은 결정 요인이 아닌 언어를 기반으로합니다. 훨씬 덜 구체적인 언어 코드보다는 날짜 형식화에 대한 시스템 환경 설정에 따라 날짜 형식을 지정하는 것이 좋습니다.
RobG

32

이것은 잘 작동합니다. chrome브라우저 에서 확인 :

var theDate = new Date(timeStamp_value * 1000);
dateString = theDate.toGMTString();
alert(dateString );

8
대신), 사용되지 않는 사용 toISOString () 또는 toUTCString (()가 toGMTString
니콜라스 Leucci

주의 * - * 하지 곱에 의해 수행1000 . 그렇지 않으면 미래 공간으로 하이퍼 루프 할 것입니다 !!
vrintle

2
1000 곱셈 1,586,855,504 후 나는 1970 제공하고, 그렇지 않으면 올바른 결과를 얻었다
Warewolf

1000의 곱셈은 타임 스탬프의 초 또는 밀리 초에 따라 달라집니다.
Tejashwi Kalp Taru


21

Moment.js 는 유닉스 타임 스탬프를 사용자 정의 형식으로 변환 할 수 있습니다.

이 경우 : var time = moment(1382086394000).format("DD-MM-YYYY h:mm:ss");

인쇄됩니다 18-10-2013 11:53:14;

이것을 보여주는 플런 커가 있습니다.


과잉 인 것 같네요
ʎzɐɹƆ

감사. 이것은 정말 나를 도왔습니다.
Akram Chauhan

13

모든 날짜 형식 혼동에 대한 간단한 방법은 다음과 같습니다.

현재 날짜 :

var current_date=new Date();

현재 날짜의 타임 스탬프를 얻으려면 :

var timestamp=new Date().getTime();

특정 날짜를 타임 스탬프로 변환하려면 :

var timestamp_formation=new Date('mm/dd/yyyy').getTime();

타임 스탬프를 날짜로 변환하려면 :

    var timestamp=new Date('02/10/2016').getTime();
    var todate=new Date(timestamp).getDate();
    var tomonth=new Date(timestamp).getMonth()+1;
    var toyear=new Date(timestamp).getFullYear();
    var original_date=tomonth+'/'+todate+'/'+toyear;

  OUTPUT:
 02/10/2016

네 @melpomene, 코드의 절반은 관련이 없지만 날짜 형성에 대한 더 많은 의구심을 없애기 위해 작성했습니다. 나는 내 자신의 코드에서 그것을 시도하고 2 일 전에 나는 그것에 일했다
Trojan

1
문자 그대로 복사했는지 여부는 중요하지 않습니다. 요점은 모든 정보가 이미 다른 답변에 있다는 것입니다. 그건 그렇고, 마지막 예제는 실제로 당신이 주장하는 출력을 생성하지 않습니다.
멜 포메 네

표시된 출력이 실제로 코드 출력과 일치하지 않음 (2016
Suyash Mittal

9

JavaScript를 사용하여 새로운 함수를 만들어야합니다.

function unixTime(unixtime) {

    var u = new Date(unixtime*1000);

      return u.getUTCFullYear() +
        '-' + ('0' + u.getUTCMonth()).slice(-2) +
        '-' + ('0' + u.getUTCDate()).slice(-2) + 
        ' ' + ('0' + u.getUTCHours()).slice(-2) +
        ':' + ('0' + u.getUTCMinutes()).slice(-2) +
        ':' + ('0' + u.getUTCSeconds()).slice(-2) +
        '.' + (u.getUTCMilliseconds() / 1000).toFixed(3).slice(2, 5) 
    };

console.log(unixTime(1370001284))

2016-04-30 08:36:26.000

3

formatDate 호출 할 수있는 함수이며 형식을 지정할 날짜를 전달할 수 있습니다. dd/mm/yyyy

var unformatedDate = new Date("2017-08-10 18:30:00");
 
$("#hello").append(formatDate(unformatedDate));
function formatDate(nowDate) {
	return nowDate.getDate() +"/"+ (nowDate.getMonth() + 1) + '/'+ nowDate.getFullYear();
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="hello">


</div>


2

이것이 제가 인스 타 그램 API를 위해 한 일입니다. 1000을 곱하여 날짜 방법으로 타임 스탬프를 변환 한 다음 (연도, 월 등) 모든 항목을 개별적으로 추가합니다.

사용자 지정 월 목록 이름을 만들고 해당 월 getMonth()의 인덱스를 반환하는 메서드로 매핑되었습니다 .

convertStampDate(unixtimestamp){

// Unixtimestamp

// Months array
var months_arr = ['January','February','March','April','May','June','July','August','September','October','November','December'];

// Convert timestamp to milliseconds
var date = new Date(unixtimestamp*1000);

// Year
var year = date.getFullYear();

// Month
var month = months_arr[date.getMonth()];

// Day
var day = date.getDate();

// Hours
var hours = date.getHours();

// Minutes
var minutes = "0" + date.getMinutes();

// Seconds
var seconds = "0" + date.getSeconds();

// Display date time in MM-dd-yyyy h:m:s format
var fulldate = month+' '+day+'-'+year+' '+hours + ':' + minutes.substr(-2) + ':' + seconds.substr(-2);

// filtered fate
var convdataTime = month+' '+day;
return convdataTime;
}

스탬프 인수로 전화 convertStampDate('1382086394000')

그리고 그게 다야.


1

내 ES6 변형은 다음과 같은 문자열을 생성합니다 2020-04-05_16:39:45.85725. 필요한 형식을 얻으려면 return 문을 자유롭게 수정하십시오.

const getDateStringServ = timestamp => {

  const plus0 = num => `0${num.toString()}`.slice(-2)

  const d = new Date(timestamp)

  const year = d.getFullYear()
  const monthTmp = d.getMonth() + 1
  const month = plus0(monthTmp)
  const date = plus0(d.getDate())
  const hour = plus0(d.getHours())
  const minute = plus0(d.getMinutes())
  const second = plus0(d.getSeconds())
  const rest = timestamp.toString().slice(-5)

  return `${year}-${month}-${date}_${hour}:${minute}:${second}.${rest}`
}

-2

주어진 날짜에서 타임 스탬프의 날짜를 계산하려면

// 정상 날짜 에서 타임 스탬프 날짜 가져 오기 : 형식-1560105000000

// 입력 날짜 는 "2019-06-09T18 : 30 : 00.000Z"형식 수 있습니다.

this.calculateDateInTimestamp = function (inputDate) {
    var date = new Date(inputDate);
    return date.getTime();
}

출력 : 1560018600000

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.