2017-08-30 1 views
1

Je sais que c'est un peu une question spécifique, mais j'ai été partout dans le momentjs docs et je n'ai pas réussi à trouver un moyen de faire quelque chose comme ce qui suit .Convertir la chaîne 'Tomorrow' en momentjs

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

Je sais que c'est une méthode inventée completelly mais, est-il un moyen d'obtenir sans avoir à passer les paramètres spécifiquement la date de tomorrow ou next week ou yesterday. En unissant les deux, existe-t-il un moyen de faire un résumé lexical d'une langue à une date?

PS: Je sais que je peux faire moment().add(1, 'day') et il me donnera la date de demain, la question est que je veux savoir s'il y a un dictionnaire déjà avec tomorrow, next week, in 2 days? et ainsi de suite cela pourrait être des dates "amicales".

+1

connexes: https://github.com/moment/moment/issues/2415 –

+0

@AdrianoRepetti Je viens de lire que, peut-être que je peut créer une demande de fonctionnalité en liant momentanément ce problème pour voir s'il y a un moyen de faire un Dict qui convertirait les dates "amicales" en moments? –

+1

Oui, c'est une fonctionnalité qui me manque très souvent, je serais heureux de le voir en momentjs (surtout parce que c'est surtout un travail autour des fichiers de traduction, au moins pour un usage de base) –

Répondre

1

Je crains qu'il n'y a pas construit dans la méthode de la carte tomorrow, next week aux valeurs de moment.

Quoi qu'il en soit, vous pouvez créer votre fromString ajouter à moment.fn

Le prototype Moment est exposé à travers moment.fn. Si vous voulez ajouter vos propres fonctions, c'est là que vous les mettrez.

Voici un exemple:

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

Pour moi, cela ressemble plus à un problème d'exposition de dictionnaire lexical. Ils ont déjà beaucoup de la logique qui est impliqué dans la date amicale à la chaîne, mais pas l'inverse, de toute façon merci pour la réponse :) 'fromString' était juste un exemple fn btw –

+0

Encore quelque chose que je voulais éviter , mais semble que ça va être ce que je vais devoir faire pour l'instant, afin de faire fonctionner le code :( –

+1

@AlejandroVales oui, 'fromString' est juste un exemple simple de' moment.fn' (je l'ai posté parce que vous avez dit dans les commentaires que vous vouliez enrichir la bibliothèque.) Je comprends qu'une fonction avec une liste de "si" n'est pas ce que vous vouliez, mais je crains qu'il n'y ait pas de dictionnaire intégré qui puisse vous aider (même dans https://github.com/moment/moment/issues/2415 il n'y a pas de solution suggérée.) J'ai mis à jour et ajouté à vos favoris votre question, pour voir si quelqu'un donne la solution que vous désirez. – VincenzoC

0

Vous pouvez créer des conditions dans lesquelles l'utilisateur choisit/tape cette chaîne. Imprime le moment correspondant, ainsi de suite et ainsi de suite.

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

C'est exactement ce que j'essayais d'éviter, je ne veux pas faire un dictionnaire pour tous les cas dans lesquels un utilisateur pourrait mettre la date de demain, et j'ai donc voulu utiliser une bibliothèque pour cela, et si ce n'est pas juste pour enrichir la bibliothèque :) –