Je ne connais pas grand chose à Javascript, et les autres questions que j'ai trouvées sont liées aux opérations sur les dates, pas seulement pour obtenir les informations dont j'ai besoin.
Je souhaite obtenir la date au format ci-dessous:
Imprimé le jeudi 27 janvier 2011 à 17:42:21.
Jusqu'à présent, j'ai eu ce qui suit:
var now = new Date();
var h = now.getHours();
var m = now.getMinutes();
var s = now.getSeconds();
h = checkTime(h);
m = checkTime(m);
s = checkTime(s);
var prnDt = "Printed on Thursday, " + now.getDate() + " January " + now.getFullYear() + " at " + h + ":" + m + ":" s;
J'ai maintenant besoin de savoir comment obtenir le jour de la semaine et le mois de l'année (leurs noms).
Existe-t-il un moyen simple de le créer ou devrais-je envisager d’utiliser des tableaux dans lesquels je voudrais simplement indexer sur la valeur correcte en utilisant now.getMonth()
et now.getDay()
?
Oui, vous aurez besoin de tableaux.
var days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];
var months = ['January','February','March','April','May','June','July','August','September','October','November','December'];
var day = days[ now.getDay() ];
var month = months[ now.getMonth() ];
Ou vous pouvez utiliser la bibliothèque date.js .
MODIFIER:
Si vous envisagez de les utiliser fréquemment, vous voudrez peut-être étendre Date.prototype
pour l'accessibilité.
(function() {
var days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];
var months = ['January','February','March','April','May','June','July','August','September','October','November','December'];
Date.prototype.getMonthName = function() {
return months[ this.getMonth() ];
};
Date.prototype.getDayName = function() {
return days[ this.getDay() ];
};
})();
var now = new Date();
var day = now.getDayName();
var month = now.getMonthName();
Utilisez la classe standard javascript Date. Pas besoin de tableaux. Pas besoin de bibliothèques supplémentaires.
var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric', hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: false };
var prnDt = 'Printed on ' + new Date().toLocaleTimeString('en-us', options);
console.log(prnDt);
Comme @ L-Ray a déjà suggéré, vous pouvez aussi regarder dans moment.js
var today = moment();
var result = {
day: today.format("dddd"),
month: today.format("MMM")
}
document.write("<pre>" + JSON.stringify(result,0,4) + "</pre>");
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.13.0/moment.min.js"></script>
Une chose que vous pouvez également faire est d'étendre l'objet de date pour renvoyer Weekday de:
Date.prototype.getWeekDay = function() {
var weekday = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
return weekday[this.getDay()];
}
vous ne pouvez donc appeler que date.getWeekDay ();
Malheureusement, l'objet Date
en javascript renvoie des informations sur les mois uniquement au format numérique. La solution la plus rapide est de créer un tableau de mois (ils ne sont pas censés changer fréquemment!) Et de créer une fonction qui renvoie le nom en fonction du nombre.
Quelque chose comme ça:
function getMonthNameByMonthNumber(mm) {
var months = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
return months[mm];
}
Votre code devient donc:
var prnDt = "Printed on Thursday, " + now.getDate() + " " + getMonthNameByMonthNumber(now.getMonth) + " "+ now.getFullYear() + " at " + h + ":" + m + ":" s;
En utilisant http://phrogz.net/JS/FormatDateTime_JS.txt vous pouvez simplement:
var now = new Date;
var prnDt = now.customFormat( "Printed on #DDDD#, #D# #MMMM# #YYYY# at #hhh#:#mm#:#ss#" );
var GetWeekDays = function (format) {
var weekDays = {};
var curDate = new Date();
for (var i = 0; i < 7; ++i) {
weekDays[curDate.getDay()] = curDate.toLocaleDateString('ru-RU', {
weekday: format ? format : 'short'
});
curDate.setDate(curDate.getDate() + 1);
}
return weekDays;
};
me.GetMonthNames = function (format) {
var monthNames = {};
var curDate = new Date();
for (var i = 0; i < 12; ++i) {
monthNames[curDate.getMonth()] = curDate.toLocaleDateString('ru-RU', {
month: format ? format : 'long'
});
curDate.setMonth(curDate.getMonth() + 1);
}
return monthNames;
};
Vous pouvez regarder datejs qui analyse la sortie de date localisée par exemple.
La mise en forme peut ressembler à ceci, dans votre exemple:
new Date().toString('dddd, d MMMM yyyy at HH:mm:ss')
La méthode toLocaleDateString () renvoie une chaîne avec une représentation sensible au langage de la partie date de cette date. Les nouveaux arguments de paramètres régionaux et d'options permettent aux applications de spécifier la langue dont les conventions de formatage doivent être utilisées et permettent de personnaliser le comportement de la fonction. Dans les implémentations plus anciennes, qui ignorent les arguments locales et options, les paramètres régionaux utilisés et la forme de la chaîne renvoyée dépendent entièrement de la mise en œuvre.
Forme longue:
const options = { weekday: 'long' };
const date = new Date();
console.log(date.toLocaleDateString('en-US', options));
Bon mot:
console.log(new Date().toLocaleDateString('en-US', { weekday: 'long' }));
Remarque: il existe d'autres options de langue pour les paramètres régionaux, mais celle présentée ici correspond à l'anglais américain .
function currentDate() {
var monthNames = [ "JANUARY", "FEBRUARY", "MARCH", "APRIL", "MAY", "JUNE",
"JULY", "AUGUST", "SEPTEMBER", "OCTOBER", "NOVEMBER", "DECEMBER" ];
var days = ['SUNDAY','MONDAY','TUESDAY','WEDNESDAY','THURSDAY','FRIDAY','SATURDAY'];
var today = new Date();
var dd = today.getDate();
var mm = monthNames[today.getMonth()];
var yyyy = today.getFullYear();
var day = days[today.getDay()];
today = 'Date is :' + dd + '-' + mm + '-' + yyyy;
document.write(today +"<br>");
document.write('Day is : ' + day );
}
currentDate();
C'est simple. Vous pouvez définir l'option pour afficher uniquement les jours de la semaine dans toLocaleDateString () pour obtenir les noms. Par exemple:
(new Date ()). toLocaleDateString ('en-US', {jour de la semaine: 'long'}) ne renverra que le jour de la semaine. Et (new Date ()). ToLocaleDateString ('en-US', {month: 'long'}) ne renverra que le mois de l'année.