Question

Je l'ai créé ce script pour calculer la date de 10 jours à l'avance dans le format jj / mm / aaaa

var MyDate = new Date();
var MyDateString = new Date();
MyDate.setDate(MyDate.getDate()+10);
MyDateString = MyDate.getDate() + '/' + (MyDate.getMonth()+1) + '/' + MyDate.getFullYear();

Je dois avoir la date apparaissent avec des zéros sur la composante jour et mois par l'ajout de ces règles au script. Je ne peux pas sembler le faire fonctionner.

if (MyDate.getMonth < 10)getMonth = '0' + getMonth;

et

if (MyDate.getDate <10)get.Date = '0' + getDate;

Si quelqu'un pouvait me montrer où insérer ces derniers dans le script que je serais vraiment reconnaissant.

Était-ce utile?

La solution

Essayez ceci: http://jsfiddle.net/xA5B7/

var MyDate = new Date();
var MyDateString;

MyDate.setDate(MyDate.getDate() + 20);

MyDateString = ('0' + MyDate.getDate()).slice(-2) + '/'
             + ('0' + (MyDate.getMonth()+1)).slice(-2) + '/'
             + MyDate.getFullYear();

EDIT:

Pour expliquer, .slice(-2) nous donne la dernier deux caractères de la chaîne.

Donc, peu importe quoi, nous pouvons ajouter "0" au jour ou au mois, et il suffit de demander les deux derniers puisque ceux-ci sont toujours les deux que nous voulons.

Donc, si les rendements de MyDate.getMonth() 9, ce sera:

("0" + "9") // Giving us "09"

afin d'ajouter .slice(-2) sur qui nous donne les deux derniers caractères qui est:

("0" + "9").slice(-2)
"09"

Mais si MyDate.getMonth() retourne 10, il sera:

("0" + "10") // Giving us "010"

afin d'ajouter .slice(-2) nous donne les deux derniers caractères, ou:

("0" + "10").slice(-2)
"10"

Autres conseils

Pour vous les gens de l'avenir (ECMAScript 2017 et au-delà)

Solution

"use strict"

const today = new Date()

const year = today.getFullYear()

const month = `${today.getMonth() + 1}`.padStart(2, 0)

const day = `${today.getDate()}`.padStart(2, 0)

const stringDate = [day, month, year].join("/") // 13/12/2017

Explaination

String.prototype.padStart(targetLength[, padString]) ajoute que autant que possible padString dans la cible de String.prototype de telle sorte que la nouvelle longueur de la cible est targetLength.

Exemple

"use strict"

let month = "9"

month = month.padStart(2, 0) // "09"

let byte = "00000100"

byte = byte.padStart(8, 0) // "00000100"
Number.prototype.padZero= function(len){
 var s= String(this), c= '0';
 len= len || 2;
 while(s.length < len) s= c + s;
 return s;
}

// utilisé:

(function(){
 var myDate= new Date(), myDateString;
 myDate.setDate(myDate.getDate()+10);

 myDateString= [myDate.getDate().padZero(),
 (myDate.getMonth()+1).padZero(),
 myDate.getFullYear()].join('/');

 alert(myDateString);
})()

/*  value: (String)
09/09/2010
*/
var MyDate = new Date();
var MyDateString = '';
MyDate.setDate(MyDate.getDate());
var tempoMonth = (MyDate.getMonth()+1);
var tempoDate = (MyDate.getDate());
if (tempoMonth < 10) tempoMonth = '0' + tempoMonth;
if (tempoDate < 10) tempoDate = '0' + tempoDate;
MyDateString = tempoDate + '/' + tempoMonth + '/' + MyDate.getFullYear();

J'ai trouvé le chemin le plus court pour faire ceci:

 MyDateString.replace(/(^|\D)(\d)(?!\d)/g, '$10$2');

ajoutera des zéros en tête à tous les solitaires, un seul chiffre

Vous pouvez utiliser l'opérateur ternaire pour formater la date comme une déclaration « si ».

Par exemple:

var MyDate = new Date();
MyDate.setDate(MyDate.getDate()+10);
var MyDateString = (MyDate.getDate() < 10 ? '0' + MyDate.getDate() : MyDate.getDate()) + '/' + ((d.getMonth()+1) < 10 ? '0' + (d.getMonth()+1) : (d.getMonth()+1)) + '/' + MyDate.getFullYear();

(MyDate.getDate() < 10 ? '0' + MyDate.getDate() : MyDate.getDate())

serait similaire à une instruction if, où si le getDate () retourne une valeur inférieure à 10, puis retourner un « 0 » + la date, ou bien retourner la date si elle est supérieure à 10 (puisque nous ne devons ajouter le 0). Idem pour le mois.

Edit: Vous avez oublié que getMonth commence par 0, donc ajouté le +1 en rendre compte. Bien sûr, vous pouvez aussi dire que d.getMonth () <9:., Mais je me suis dit en utilisant le +1 contribuerait à rendre plus facile à comprendre

Faites votre vie plus facile et utiliser Moment.js un exemple de code:

var beginDateTime = moment()
  .format('DD-MM-YYYY HH:mm')
  .toString();

// Now will print 30-06-2015 17:55
console.log(beginDateTime);
function formatDate(jsDate){
  // add leading zeroes to jsDate when days or months are < 10.. 
  // i.e.
  //     formatDate(new Date("1/3/2013")); 
  // returns
  //    "01/03/2103"
  ////////////////////
  return (jsDate.getDate()<10?("0"+jsDate.getDate()):jsDate.getDate()) + "/" + 
      ((jsDate.getMonth()+1)<10?("0"+(jsDate.getMonth()+1)):(jsDate.getMonth()+1)) + "/" + 
      jsDate.getFullYear();
}

J'Enveloppez la bonne réponse de cette question dans une fonction qui peut ajouter plusieurs mais conduisant les paramètres par défaut de zéro à ajouter 1 zéro.

function zeroFill(nr, depth){
  depth = (depth === undefined)? 1 : depth;

  var zero = "0";
  for (var i = 0; i < depth; ++i) {
    zero += "0";
  }

  return (zero + nr).slice(-(depth + 1));
}

pour travailler avec des chiffres et pas plus de 2 chiffres, cela est aussi une approche:

function zeroFill(i) {
    return (i < 10 ? '0' : '') + i
  }

Vous pouvez fournir des options en tant que paramètre à jour de format. Le premier paramètre est pour les paramètres régionaux que vous ne pourriez pas besoin et le second est pour les options. Pour plus d'informations, visitez https://developer.mozilla.org/ en-US / docs / Web / JavaScript / Référence / Global_Objects / date / toLocaleDateString

var date = new Date(Date.UTC(2012, 1, 1, 3, 0, 0));
var options = { year: 'numeric', month: '2-digit', day: '2-digit' };
console.log(date.toLocaleDateString(undefined,options));

Une autre option, en utilisant une fonction intégrée pour faire le rembourrage (mais entraînant un code assez long!):

myDateString = myDate.getDate().toLocaleString('en-US', {minimumIntegerDigits: 2})
  + '/' + (myDate.getMonth()+1).toLocaleString('en-US', {minimumIntegerDigits: 2})
  + '/' + myDate.getFullYear();

// '12/06/2017'

Et une autre, des chaînes avec des expressions manipulation régulières:

var myDateString = myDate.toISOString().replace(/T.*/, '').replace(/-/g, '/');

// '2017/06/12'

Mais sachez que l'on va montrer l'année au start et le jour au end .

Il y a une autre approche pour résoudre ce problème, en utilisant slice en JavaScript.

var d = new Date();
var datestring = d.getFullYear() + "-" + ("0"+(d.getMonth()+1)).slice(-2) +"-"+("0" + d.getDate()).slice(-2);

la date de retour de datestring avec le format que vous attendez: 01/09/2019

Une autre approche utilise la bibliothèque de dateformat: https://github.com/felixge/node-dateformat

Les objectifs suivants pour extraire la configuration, crochet dans Date.protoype et la configuration sont applicables.

Je l'ai utilisé un Array pour stocker des morceaux de temps et quand je push() this comme objet Date, il me renvoie la longueur itérer. Quand je suis fait, je peux utiliser join sur la valeur return.

Cela semble fonctionner assez rapide: 0.016ms

// Date protoype
Date.prototype.formatTime = function (options) {
    var i = 0,
        time = [],
        len = time.push(this.getHours(), this.getMinutes(), this.getSeconds());

    for (; i < len; i += 1) {
        var tick = time[i];
        time[i] = tick < 10 ? options.pad + tick : tick;
    }

    return time.join(options.separator);
};

// Setup output
var cfg = {
    fieldClock: "#fieldClock",
    options: {
        pad: "0",
        separator: ":",
        tick: 1000
    }
};

// Define functionality
function startTime() {
    var clock = $(cfg.fieldClock),
        now = new Date().formatTime(cfg.options);

    clock.val(now);
    setTimeout(startTime, cfg.options.tick);
}

// Run once
startTime();

demo: http://jsfiddle.net/tive/U4MZ3/

Qu'est-ce que je ferais, est de créer mon propre aide personnalisée Date qui ressemble à ceci:

var DateHelper = {
    addDays : function(aDate, numberOfDays) {
        aDate.setDate(aDate.getDate() + numberOfDays); // Add numberOfDays
        return aDate;                                  // Return the date
    },
    format : function format(date) {
        return [
           ("0" + date.getDate()).slice(-2),           // Get day and pad it with zeroes
           ("0" + (date.getMonth()+1)).slice(-2),      // Get month and pad it with zeroes
           date.getFullYear()                          // Get full year
        ].join('/');                                   // Glue the pieces together
    }
}

// With this helper, you can now just use one line of readable code to :
// ---------------------------------------------------------------------
// 1. Get the current date
// 2. Add 20 days
// 3. Format it
// 4. Output it
// ---------------------------------------------------------------------
document.body.innerHTML = DateHelper.format(DateHelper.addDays(new Date(), 20));

(voir aussi ce Fiddle )

Ajoutez un peu de rembourrage pour permettre un zéro - le cas échéant -. Et concaténer en utilisant votre delimiter de choix en tant que chaîne

Number.prototype.padLeft = function(base,chr){
        var  len = (String(base || 10).length - String(this).length)+1;
        return len > 0? new Array(len).join(chr || '0')+this : this;
    }

var d = new Date(my_date);
var dformatted = [(d.getMonth()+1).padLeft(), d.getDate().padLeft(), d.getFullYear()].join('/');

Ajout à réponse @modiX, voici ce qui fonctionne ... NE PAS LAISSER QUE comme vide

today.toLocaleDateString("default", {year: "numeric", month: "2-digit", day: "2-digit"})
 let date = new Date();
 let dd = date.getDate();//day of month

 let mm = date.getMonth();// month
 let yyyy = date.getFullYear();//day of week
 if (dd < 10) {//if less then 10 add a leading zero
     dd = "0" + dd;
   }
 if (mm < 10) {
    mm = "0" + mm;//if less then 10 add a leading zero
  }

essayer pour une fonction de base, pas de bibliothèques requises

Date.prototype.CustomformatDate = function() {
 var tmp = new Date(this.valueOf());
 var mm = tmp.getMonth() + 1;
 if (mm < 10) mm = "0" + mm;
 var dd = tmp.getDate();
 if (dd < 10) dd = "0" + dd;
 return mm + "/" + dd + "/" + tmp.getFullYear();
};
scroll top