2016-10-02 2 views
0

저는 트위터 인터페이스를 만들고 있는데 트위터 자체처럼 시간을 표시하고 싶습니다.Twitter API 게시 시간/날짜를 유효한 ISO 형식으로 변환하려면 어떻게해야합니까?

GET 요청을 수행하고 트윗을 가져온 다음 변환 후 moment.js으로 전달합니다.

client.get('direct_messages', {screen_name: 'theclearytheory', count: '3'}, function(error, messages, response){ 
    if(!error){ 
     var privateMessageTime = []; 

     for(var i=0; i < messages.length; i++){ 
      console.log(messages[i].created_at); 
      privateMessageTime.push(moment(messages[i].created_at).fromNow()); 
     } 
    } else { 
     console.log(error) 
    } 

지금,이 잘 작동 않습니다 : 여기에

이의 코드입니다. 만약 내가 Sun Oct 02 11:59:43 +0000 2016으로 돌아 가면 프로그램은 올바르게 이것을 2 months ago으로 바꾼다.

문제

내가 콘솔에서이 경고 메시지를 얻고 있다는 것입니다 : 나는 문서를 통해 흐르고있다

Deprecation warning: value provided is not in a recognized ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info. Arguments: [0] _isAMomentObject: true, _isUTC: false, _useUTC: false, _l: undefined, _i: Fri Jul 22 10:19:18 +0000 2016, _f: undefined, _strict: undefined, _locale: [object Object]

가에 링크하지만 난 그냥이 작동하는 방법을 작동하지 않을 수 있습니다. 누구든지 이것 (또는 나보다 훨씬 똑똑)에 어떤 경험이 있다면, 나는 정말로 어떤 도움을 주셔서 감사합니다!

답변

2

을 구문 분석 문서에 명시된 바와 같이 : http://momentjs.com/guides/#/parsing/strict-mode/ 아래 참조) 코드를 사용하고 세 번째 인수와 체인 .format (와 두 번째 인자와 진실에 대한 문자열로 원하는 형식을 추가 할 수 있습니다

Warning: Browser support for parsing strings is inconsistent . Because there is no specification on which formats should be supported, what works in some browsers will not work in other browsers.

For consistent results parsing anything other than ISO 8601 strings, you should use String + Format

당신이 받고 있기 때문에 Sun Oct 02 11:59:43 +0000 2016 당신이해야합니다 :

moment(messages[i].created_at, 'ddd MMM DD HH:mm:ss Z YYYY').fromNow() 

대신 moment(messages[i].created_at).fromNow().

+0

아하이, 그래서 이것은 단지 그것이 작동하는 '순간'을 말해? – bloppit

+0

예, 정확히 말하면 링크 된 문서에서 설명 된 것처럼 ISO 8601과 일치하지 않는 경우 입력 문자열의 형식을 지정해야합니다. – VincenzoC

+0

신난다, 고마워. – bloppit

1

엄격 모드의 문서 섹션을 참조합니다.

client.get('direct_messages', {screen_name: 'theclearytheory', count: '3'}, function(error, messages, response){ 
      if(!error){ 
       var privateMessageTime = []; 

       for(var i=0; i < messages.length; i++){ 
        console.log(messages[i].created_at); 
        privateMessageTime.push(moment(messages[i].created_at, 'MM/DD/YYYY', true).format().fromNow()); 
       } 
      } else { 
       console.log(error) 
      } 
+0

나는이 친구를 만난다 : dateTweeted.push (moment 짹짹 [i] .created_at, 'MM/DD/YYYY', true) .format(). fromNow()); ^ TypeError : 순간 (...). 형식 (...). fromNow가 함수가 아닙니다. ' – bloppit

+0

@haasdev? – bloppit

관련 문제