ReactNative / Momentjs日期解析问题

时间:2016-08-11 00:12:14

标签: javascript react-native momentjs

在React Native中使用momentjs。下面的MomentT功能是根据请求的格式解析日期/时间,并且它正确显示格式,但它给了我一个奇怪的时间,而不是日落的时间。它实际上似乎忽略了json.sys.sunset(在洛杉矶目前在unix时间大约是1470969909)并将其解析为4:36:09 pm,但它应该解析为7:45:09 PM。我究竟做错了什么?

以下是相关代码:

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;
});
}

2 个答案:

答案 0 :(得分:1)

您需要在new Date中解析tod,如下所示

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

根据docs第一个参数必须是日期字符串

答案 1 :(得分:1)

moment(Number)要求时间戳是自纪元以来毫秒的数量。你会在几秒钟内过世,所以你最终会在1970年的某个地方结束。

两种解决方案:

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

记录herehere