2016-08-11 5 views
0

Использование momentjs с React Native. В приведенной ниже функции MomentT анализируется дата/время в соответствии с запрошенным форматом, и оно отображается правильно, но это дает мне странное время, а не время заката. На самом деле, похоже, это игнорируется json.sys.sunset (что в Лос-Анджелесе в настоящее время составляет примерно 1470969909 в разное время) и анализирует его как 4:36:09 вечера, но он должен разобрать его как 7:45:09 вечера. Что я делаю не так?ReactNative/Momentjs date parsing issue

Вот соответствующий код:

var moment = require('moment'); 

var MomentT = function(tod) { 
    return moment(tod).format('h:mm:ss a'); 
}; 

module.exports = function(latitude, longitude) { 
    var url = `${rootUrl}&lat=${latitude}&lon=${longitude}`; 
    console.log(url); 
    return fetch(url) 
    .then(function(response){ 
     return response.json(); 
    }) 
    .then(function(json){ 
     return { 
     sunset: MomentT(json.sys.sunset) 
     } 
    }) 
    .catch(function(error) { 
    console.log('There has been a problem with your fetch operation: ' + error.message); 
    throw error; 
}); 
} 

ответ

1

Вам нужно разобрать TOD в new Date ниже

var MomentT = function(tod) { 
    return moment(new Date(tod)).format('MMMM Do YYYY, h:mm:ss a'); 
}; 

Согласно docs 1 аргумент должен быть DateString

1

moment(Number) требует, чтобы метка времени это число миллисекунд с эпохи. Вы переходящая в секундах, так что вы в конечном итоге с даты где-то в 1970 году

Два решения:

moment(tod * 1000) 
moment.unix(tod) 

Документально here и here.