2017-08-30 62 views
1

我知道这是一个特定的问题,但我一直在momentjs docs的地方,我一直无法找到一种方法来做下面的事情。将字符串'Tomorrow'转换为momentjs

moment().fromString('tomorrow') 
// 'The date of tomorrow' 
moment().fromString('next week') 
// 'The date of next week' 
moment().fromString('yesterday') 
// 'The date of yesterday' 

我知道这是一个completelly本发明的方法,但是,有没有办法让日期为tomorrow,或next weekyesterday,而不必专门传递参数。 把它放在一起,有没有办法让一个语言词法简历恢复到日期?

PS:我知道我可以做moment().add(1, 'day'),它会给我明天的日期,问题是,我想知道是否有一本字典已经与tomorrownext weekin 2 days?等等,这可能是“人性化”的日期。

+1

相关:https://github.com/moment/moment/issues/2415 –

+0

@AdrianoRepetti我只是读,也许我可以在联系此问题时创建一个功能请求,以查看是否有方法创建一个将“人性化”日期转换为时刻的Dict? –

+1

是的,这是我经常想念的功能,我很乐意看到它在瞬间(特别是因为它主要是翻译文件的工作,至少对于基本用法) –

回答

1

我担心,有没有内置的方法来映射tomorrownext week到力矩值。

反正你可以创建你fromString将它moment.fn

Moment原型是通过moment.fn暴露。如果你想添加你自己的功能,那就是你放置它们的地方。

下面的例子:

moment.fn.fromString = function(param){ 
 
    if(param === 'tomorrow'){ 
 
    return this.clone().add(1, 'day'); 
 
    } else if(param === 'next week'){ 
 
    return this.clone().add(1, 'week'); 
 
    } else if(param === 'yesterday'){ 
 
    return this.clone().subtract(1, 'day'); 
 
    } 
 
    
 
    return this; 
 
} 
 

 

 
console.log(moment().fromString('tomorrow').format()) 
 
console.log(moment().fromString('next week').format()) 
 
console.log(moment().fromString('yesterday').format())
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

+0

对我来说,这似乎更像是一个词典词汇暴露问题。 他们已经有很多的友好日期中涉及的字符串的逻辑,但不是其他方式,无论如何谢谢你的答案:)'fromString'只是一个例子btw –

+0

还是我想避免的东西,但似乎这将是我现在必须做的,为了使代码的工作:( –

+1

@AjjandroVales是的,'fromString'只是一个简单的例子'moment.fn'(我发布它,因为你在评论中说过你想要丰富library_)我明白一个带有“if”列表的函数并不是你想要的,但是我担心没有内置的字典可以帮助你(甚至在https://github.com/moment/moment/issues/2415没有建议的解决方案)。我将upvoted添加到收藏夹中,以查看是否有人提供了您想要的解决方案。 – VincenzoC

0

您可以创建条件,其中如果用户选择/键入此字符串。打印相应的时刻,如此等等。

if(str == 'tomorrow') 
{ 
moment().add(1, 'day')} 
} 
+2

这正是我试图避免的情况,我不想为所有用户可以放置明天日期的情况制作字典,因此我想使用库对于这一点,如果不只是丰富图书馆:) –