web-dev-qa-db-fra.com

Comment obtenir le jour de la semaine et le mois de l'année?

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.

Objectif

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()?

100
Will Marcouiller

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();
191
user113716

Utilisez la classe standard javascript Date. Pas besoin de tableaux. Pas besoin de bibliothèques supplémentaires.

Voir https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString

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);

13
RWC

Comme @ L-Ray a déjà suggéré, vous pouvez aussi regarder dans moment.js

Échantillon

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>

6
Rajesh

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 ();

6
Pritam Narkhede

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;
5
lucke84

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#" );
3
Phrogz
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;
};
3
P.S.S.

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') 
2
Dan

De https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString

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 .

1
cambist
  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();
0
Anil Kumar

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.

0
Antonio Jha