Je voudrais utiliser l'option moment.calendar () sans le temps ... donc au lieu de "Mardi dernier à 17 heures" Je veux "Mardi dernier". Quelqu'un sait-il si moment a une solution pour cela maintenant? J'ai trouvé ce violon http://jsfiddle.net/nawxZ/ , qui montre apparemment une solution pour cela, mais je peux ' Vous ne voyez pas comment cela est censé fonctionner? merci carl
function log(str) {
$('body').append('<p>' + str + '</p>');
}
log(moment().calendar());
log(moment().calendar(true));
à partir du moment 2.10.5 vous pouvez faire:
moment(/*your date*/).calendar(null,{
lastDay : '[Yesterday]',
sameDay : '[Today]',
nextDay : '[Tomorrow]',
lastWeek : '[last] dddd',
nextWeek : 'dddd',
sameElse : 'L'
})
cela fonctionne parfaitement. l'essayer.
(moment (heure) .calendar (). split ("à")) [0]
moment().calendar()
supporte les chaînes formatées et les fonctions de formatage personnalisées.
moment().calendar();
>> "Today at 9:06 AM"
Puis définissez vos chaînes formatées
moment.locale('yourlang', {
calendar: {
lastDay: function () {
return '[last]';
},
sameDay: function () {
return '[Today]';
}
}
});
moment().calendar();
// Will now output
>> "Today"
devrait faire l'affaire. Les docs sont une source inestimable
J'ai créé une directive angulaire qui fournit un calendrier avec la date uniquement . Si vous n'utilisez pas angulaire, utilisez simplement la fonction.
app.filter('amCalendarDate', function($translate) {
return function(dt) {
var md = moment(dt), key = '';
if (!dt || !md || (md + '').toLowerCase() == 'invalid date')
return '';
var today = moment();
var diff = today.diff(md, 'days');
if (!diff)
key = 'Today';
else if (diff == -1)
key = 'Tomorrow';
else if (diff == 1)
key = 'Yesterday';
else if (Math.abs(diff) <= 6) {
if (diff < 0)
key = 'Next';
else
key = 'Last';
var days = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');
today.day(diff);
key += ' ' + days[today.day()];
}
if (key) {
// if you don't have translate, just return the key
return $translate.amCalendarDate[key];
} else
return md.format('L');
}
});
Si vous n'avez pas défini d'heures personnalisées et travaillez uniquement sur une base journalière, vous pouvez utiliser cette solution simple et multilingue (testée pour EN/DE/FR/IT). (les journées complètes sont toujours sauvegardées avec un horaire de 00:00)
let dateParts = moment(DATE).calendar().split(' '),
index = dateParts.indexOf('00:00');
// ['Yesterday', 'at', '00:00', 'PM'] -> ['Yesterday']
dateParts.length = (index !== -1 ? (index - 1) : dateParts.length);