Javascript 如何将Twitter API发布时间/日期转换为有效的ISO格式?

Javascript 如何将Twitter API发布时间/日期转换为有效的ISO格式?,javascript,node.js,twitter,momentjs,Javascript,Node.js,Twitter,Momentjs,我正在构建一个twitter界面,我想像twitter一样显示时代 我执行GET请求并抓取tweet,然后将其传递到moment.js,以便转换它 以下是此示例的代码片段: client.get('direct_messages', {screen_name: 'theclearytheory', count: '3'}, function(error, messages, response){ if(!error){ var privateMessageTime = [

我正在构建一个twitter界面,我想像twitter一样显示时代

我执行GET请求并抓取tweet,然后将其传递到
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)
    }
client.get('direct_messages',{screen_name:'theclearytheory',count:'3',函数(错误,消息,响应){
如果(!错误){
var privateMessageTime=[];
对于(var i=0;i
现在,这确实很好。如果我回到
太阳2016年10月2日11:59:43+0000
,那么程序会正确地将其转换为:
2个月前

问题是我在控制台中收到以下警告消息:

弃用警告:提供的值不是可识别的ISO格式。即时构造使用js Date(),这在所有浏览器和版本中都不可靠。不鼓励使用非ISO Date格式,并将在即将发布的主要版本中删除。有关详细信息,请参阅。 论据:
[0]\u IsamentintObject:true、\u isUTC:false、\u useUTC:false、\u l:undefined、\u i:Fri Jul 22 10:19:18+0000 2016、\u f:undefined、\u strict:undefined、\u locale:[对象对象]


我已经浏览了它链接到的文档,但我就是不知道如何使用它。如果有人对此有任何经验(或者比我聪明得多),我非常感谢您的帮助!

我会参考文档中关于严格模式的部分。 您可以使用代码,然后将所需格式添加为第二个参数的字符串,将true添加为第三个参数和chain。format()请参见以下内容:

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)
            }
client.get('direct_messages',{screen_name:'theclearytheory',count:'3',函数(错误,消息,响应){
如果(!错误){
var privateMessageTime=[];
对于(var i=0;i
我将参考文档中关于严格模式的部分。 您可以使用代码,然后将所需格式添加为第二个参数的字符串,将true添加为第三个参数和chain。format()请参见以下内容:

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)
            }
client.get('direct_messages',{screen_name:'theclearytheory',count:'3',函数(错误,消息,响应){
如果(!错误){
var privateMessageTime=[];
对于(var i=0;i
如解析文档中所述:

警告:浏览器支持解析字符串。由于没有支持哪些格式的规范,在某些浏览器中有效的格式在其他浏览器中不起作用

对于解析ISO 8601字符串以外的任何内容的一致结果,应使用

由于您将获得2016年10月2日11:59:43+0000的
Sun
,您将获得:

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

而不是解析文档中所述的
时刻(消息[i]。在.fromNow()处创建):

警告:浏览器支持解析字符串。由于没有支持哪些格式的规范,在某些浏览器中有效的格式在其他浏览器中不起作用

对于解析ISO 8601字符串以外的任何内容的一致结果,应使用

由于您将获得2016年10月2日11:59:43+0000的
Sun
,您将获得:

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

而不是
moment(messages[i]。created_at).fromNow()

我得到了这个家伙:
dateTweeted.push(moment(tweets[i]。created_at'MM/DD/yyyyy',true)。format().fromNow();^TypeError:moment(…).format(…).fromNow不是一个函数
anyidea@haasdev?我得到了这个家伙:
dateTweeted.push(瞬间(tweets[I]。创建于'MM/DD/yyyyy',true)。format().fromNow();^TypeError:moment(…).format(…).fromNow不是一个函数
any idea@haasdev?啊,我明白了,所以这只是告诉
moment
它使用的是什么?是的,准确地说,如果输入字符串与链接文档中的ISO 8601不匹配,你必须指定其格式。啊,我明白了,所以这只是告诉
moment
它使用的是什么?是的,准确地说,你有如果输入字符串与链接文档中显示的ISO 8601不匹配,则指定输入字符串的格式。