J'ai créé ce script pour calculer la date 10 jours à l'avance au 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();
J'ai besoin que la date apparaisse avec des zéros au début du mois et du jour en ajoutant ces règles au script. Je n'arrive pas à 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 éléments dans le script, je vous en serais très reconnaissant.
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 les derniers deux caractères de la chaîne.
Donc, peu importe le problème, nous pouvons ajouter "0"
au jour ou au mois, et demander simplement les deux derniers, car ce sont toujours les deux que nous voulons.
Donc, si la MyDate.getMonth()
retourne 9
, elle sera:
("0" + "9") // Giving us "09"
donc 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
, ce sera:
("0" + "10") // Giving us "010"
donc ajouter .slice(-2)
nous donne les deux derniers caractères, ou:
("0" + "10").slice(-2)
"10"
Voici un exemple tiré de documents d'objet Date sur le réseau de développeurs Mozilla à l'aide d'une fonction "pad" personnalisée, sans avoir à étendre le prototype Javascript de Number. La fonction pratique qu'ils donnent à titre d'exemple est
function pad(n){return n<10 ? '0'+n : n}
Et ci-dessous est-il utilisé dans le contexte.
/* use a function for the exact format desired... */
function ISODateString(d){
function pad(n){return n<10 ? '0'+n : n}
return d.getUTCFullYear()+'-'
+ pad(d.getUTCMonth()+1)+'-'
+ pad(d.getUTCDate())+'T'
+ pad(d.getUTCHours())+':'
+ pad(d.getUTCMinutes())+':'
+ pad(d.getUTCSeconds())+'Z'
}
var d = new Date();
console.log(ISODateString(d)); // prints something like 2009-09-28T19:03:12Z
Vous pouvez définir une fonction "str_pad" (comme dans php):
function str_pad(n) {
return String("00" + n).slice(-2);
}
Pour ce faire, la nouvelle méthode moderne consiste à utiliser toLocaleDateString
, car elle vous permet non seulement de formater une date avec la localisation appropriée, vous pouvez même passer des options de formatage pour archiver le résultat souhaité:
var date = new Date(2018, 2, 1);
var result = date.toLocaleDateString("en-GB", { // you can skip the first argument
year: "numeric",
month: "2-digit",
day: "2-digit",
});
console.log(result);
Lorsque vous ignorez le premier argument, il détectera la langue du navigateur. De plus, vous pouvez aussi utiliser 2-digit
pour l’année.
Si vous n'avez pas besoin de supporter les anciens navigateurs comme IE10, c'est la manière la plus propre de faire le travail. IE10 et les versions inférieures ne comprendront pas l'argument des options.
"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
le String.prototype.padStart(targetLength[, padString])
ajoute autant que possible padString
dans la cible String.prototype
de sorte que la nouvelle longueur de la cible soit targetLength
.
"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 moyen le plus court de le faire:
MyDateString.replace(/(^|\D)(\d)(?!\d)/g, '$10$2');
ajoutera des zéros à tous les chiffres isolés, à un chiffre
Simplifiez-vous la vie et utilisez Moment.js quelques exemples 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();
}
Vous pouvez utiliser l'opérateur ternaire pour formater la date comme une déclaration "if".
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();
Alors
(MyDate.getDate() < 10 ? '0' + MyDate.getDate() : MyDate.getDate())
serait semblable à une instruction if, où si getDate () renvoie une valeur inférieure à 10, renvoyer un '0' + la date ou bien renvoyer la date si elle est supérieure à 10 (car nous n'avons pas besoin d'ajouter l'élément principal). 0) Idem pour le mois.
Edit: oublié que getMonth commence par 0, nous avons donc ajouté le +1 pour en rendre compte. Bien sûr, vous pouvez aussi simplement dire d.getMonth () <9:, mais je pensais que le +1 contribuerait à la rendre plus facile à comprendre.
Vous pouvez fournir des options en tant que paramètre pour formater la date. Le premier paramètre concerne les paramètres régionaux dont vous n'avez peut-être pas besoin et le second les options. Pour plus d'informations, visitez https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/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));
J'ai enveloppé la bonne réponse de cette question dans une fonction qui peut ajouter plusieurs zéros non significatifs, mais qui par défaut ajoute 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 nombres uniquement et pas plus de 2 chiffres, c’est aussi une approche:
function zeroFill(i) {
return (i < 10 ? '0' : '') + i
}
Une autre option, utilisant une fonction intégrée pour faire le remplissage (mais avec 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 un autre, manipulant des chaînes avec des expressions régulières:
var myDateString = myDate.toISOString().replace(/T.*/, '').replace(/-/g, '/');
// '2017/06/12'
Mais sachez que l'on affichera l'année au début et le jour au fin.
Comme le suggère @John Henckel, commencer à utiliser la méthode toISOString () facilite les choses
const dateString = new Date().toISOString().split('-');
const year = dateString[0];
const month = dateString[1];
const day = dateString[2].split('T')[0];
console.log(`${year}-${month}-${day}`);
Ce que je voudrais faire, c'est créer mon propre assistant Date personnalisé 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 violon )
Ce qui suit a pour but d’extraire la configuration, d’accrocher Date.protoype
et d’appliquer la configuration.
J'ai utilisé un Array
pour stocker des fragments de temps et lorsque je Push()
this
en tant qu'objet Date
, il me renvoie la longueur à parcourir. Quand j'ai terminé, je peux utiliser join
sur la valeur return
.
Cela semble fonctionner assez vite: 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();
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
}
Ajoutez du rembourrage pour permettre un zéro non significatif - le cas échéant - et concaténez en utilisant le délimiteur de votre choix sous forme de 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('/');
En ajoutant à la réponse @modiX, c’est ce qui fonctionne ... NE LAISSEZ QUE comme vide
today.toLocaleDateString("default", {year: "numeric", month: "2-digit", day: "2-digit"})