2017-01-21 1 views
0

JavaScript에서 날짜 문자열을 Unix 타임 스탬프로 변환하고 있습니다. 여기 날짜를 GMT로 변환하면 정확도는 0입니다.

내가 무엇을 얻을 수 있습니다 :

8월 26,2015을 - 1440561600

내가 가야 무엇 :

8월 26,2015 - 1440547200

이 GMT가 0으로 설정되지 않아 분명히 발생합니다. 따라서 본질적으로 내 시간은
수요일, 2020 년 8 월 26 일 04:00입니다. : 00 GMT

정말 변환해야합니다 :
수, 나는 Date.getTime()/1000를 사용하기 전에 어떻게 내가 내 일에 GMT 제거 할 수 0시 0 분 0 초 GMT

2015 8월 26일를?

나는이 웹 사이트에서 수많은 방법을 시도했으며 그 중 아무도 작동하지 않았습니다. 참고 : Moment.js 또는 다른 라이브러리와 같은 라이브러리를 사용하고 싶지 않습니다. 저에게 알려주세요.

+0

마십시오 여기에 또는에서 UTC 자바 스크립트를 검색하시기 바랍니다 Google.여기에 복제본이 중복되어 있습니다. – mplungjan

+0

나는 그들 중 누구도 일하고 ​​있지 않습니다! 방금 새로운 Date(). getTimezoneOffset()을 사용하고 60을 곱하여 밀리 초 단위로 차이를 구하고 원래 날짜로 빼는 방법을 시도한 다른 시도했습니다. 여전히 작동하지 않습니다. 수 초 만에 작동 예제를 작성할 수 있습니까? 나는 그것이 당신을위한 케이크의 조각이라고 확신합니다. – JohnSnow

+0

아니요. 케이크 한 장이 아니며 정확히 무엇을 원하는지 아직 확신 할 수 없습니다 - UTC가 있으며 ISO 날짜가 있습니다. 중복이 아닌가요? http://stackoverflow.com/questions/9756120/how-do-i-get-a-utc-timestamp-in-javascript – mplungjan

답변

0

2015 년 8 월 26 일 (UTC + 0000, 즉 2015-08-26T00 : 00 : 00Z)의 시간대와 같은 날짜 문자열을 구문 분석하려고한다고 생각합니다. 이를 수행하는 가장 좋은 방법은 문자열을 올바르게 형식화하고 신뢰할 수있는 구문 분석기를 사용하는 것입니다.

그러나 문자열을 구문 분석하여 형식을 다시 지정하려는 경우 날짜를 만들 수도 있습니다.

형식을 ECMA-262에서 지원하지 않으므로 문자열을 Date 생성자 또는 Date.parse로 확실하게 구문 분석 할 수 없으므로 해당 함수 나 간단한 함수에 라이브러리를 사용하십시오.

표준 시간대가없는 날짜 문자열은 일반적으로 로컬 시스템, 즉 호스트 시스템 시간대로 가정됩니다 (ECMAScript는 "2017-01-20"과 같은 ISO 8601 날짜는 UTC로 처리됩니다).

문자열이 UTC로 구문 분석 된 것처럼 날짜를 얻으려면 로컬로 구문 분석 한 다음 시간대 오프셋을 뺍니다. ECMAScript 시간대는 ISO 8601과 반대의 의미를 갖습니다 : 동쪽은 -ve이고 서쪽은 + ve입니다.

Date 개체는 단지 시간 값이며 호스트로부터의 시간대 오프셋을 가져옵니다. 다음은 시간 값을 조작하며 그 밖의 것은 없습니다 (즉, 어떤 respsect에서든지 시간대를 "설정"하지 않음).

/* Parse a date in format August 26,2015 as local 
 
** @param {string} s - string to parse in MMMM DD, YYYY format 
 
** @returns {Date} 
 
*/ 
 
function parseMdy(s) { 
 
    var months = 'jan feb mar apr may jun jul aug sep oct nov dec'.split(' '); 
 
    var b = s.split(/\W/); 
 
    var month = months.indexOf(b[0].toLowerCase().substr(0,3)); 
 
    return new Date(b[2], month, b[1]); 
 
} 
 

 
// Parse as local 
 
var d = parseMdy('August 26,2015'); 
 
console.log('Local date time : ' + d.toString()); 
 

 
// Subtract timezone 
 
d.setMinutes(d.getMinutes() - d.getTimezoneOffset()); 
 
console.log('Adjusted to +0000: ' + d.toISOString()); 
 
console.log('UNIX time value : ' + (d/1000|0));

인해 ECMAScript를 구문 분석에 대한 기발한 사양, 날짜가 다음 ISO 8601에 따라 포맷하면 내장 UTC로 취급됩니다 파서 (하지만 여전히 어느 정도 신뢰할 수) :

// August 26,2015 formatted as 2015-08-26 
 
var d = new Date('2015-08-26'); 
 
console.log(d.toISOString()); 
 
console.log(d/1000|0);

관련 문제