Я создал этот скрипт для вычисления даты для За 10 дней в формате дд / мм / гггг:

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

Мне нужно, чтобы дата добавлялась с начальными нулями в компоненте день и месяц, чтобы добавить эти правила в скрипт. Я не могу заставить его работать.

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

значения этого {{}} этого свойства

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

Если бы кто-то мог показать мне, где вставить их в сценарий, я был бы очень благодарен.

Попробуйте: 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();

Мы только что выпустили

Чтобы объяснить, .slice(-2) дает нам http://jsfiddle.net/qk5wwyct два символа строки.

Поэтому, несмотря ни на что, мы можем добавить "0" к дню или месяцу и просто спросить последние два, так как это всегда те два, которые мы хотим.

Так что если MyDate.getMonth() Какой самый простой способ сопоставления не-ASCII символов в регулярном выражении? Я хотел бы сопоставить все слова по отдельности во входной строке, но язык может быть не английским, поэтому мне нужно будет сопоставить такие вещи, как ü, ö, ß и ñ. Кроме того, это в Javascript / jQuery, поэтому любое решение должно быть применимо к этому. 9, это будет:

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

, поэтому при добавлении .slice(-2) мы получим два последних символа:

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

Но если MyDate.getMonth() Какой самый простой способ сопоставления не-ASCII символов в регулярном выражении? Я хотел бы сопоставить все слова по отдельности во входной строке, но язык может быть не английским, поэтому мне нужно будет сопоставить такие вещи, как ü, ö, ß и ñ. Кроме того, это в Javascript / jQuery, поэтому любое решение должно быть применимо к этому. 10, это будет:

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

, поэтому при добавлении .slice(-2) даст нам последние два символа, или:

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

Вот пример из документа объекта Date в Mozilla Developer Network, использующего пользовательскую функцию «pad» без необходимости расширения прототипа Javascript Number. Удобная функция, которую они приводят в качестве примера:

function pad(n){return n<10 ? '0' n : n}

И ниже она используется в контексте.

/* 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

Вы можете определить функцию «str_pad» (как в php):

function str_pad(n) {
    return String("00"   n).slice(-2);
}

Новый современный способ сделать это — использовать toLocaleDateString, потому что он не только позволяет форматировать дату с правильной локализацией, вы можете даже передайте параметры формата для архивации желаемого результата:

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

Когда вы пропустите первый аргумент, он вместо этого обнаружит язык браузера. Кроме того, вы также можете использовать 2-digit в опции года.

Если вам не нужно поддерживать старые браузеры, такие как IE10, это самый чистый способ выполнить работу. , IE10 и более низкие версии не будут понимать аргумент параметров.

, и, возможно, это не так просто, но лучше, чем ничего. Посмотрите:

"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

Объяснение

Переменная String.prototype.padStart(targetLength[, padString]) добавляет как можно больше цели padString Этот метод похож на _.sortBy, за исключением того, что он позволяет задавать порядки сортировки итерируемых для сортировки. Если заказы не указаны, все значения сортируются в порядке возрастания. В противном случае укажите порядок «desc» для убывающего или «asc» для возрастающего порядка сортировки соответствующих значений. String.prototype, чтобы новая длина цели использовалась 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;
}

//:

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

Вы можете использовать троичный оператор для форматирования даты, как в операторе «if».

Также смотрите

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

будет похоже на оператор if, где, если getDate () возвращает значение меньше 10, затем возвращает ‘0’ Дата, или же возвращает дату, если больше 10 (так как нам не нужно добавлять ведущий 0). То же самое за месяц.

Изменить: Забыл, что getMonth начинается с 0, поэтому добавил 1, чтобы учесть это. Конечно, вы также можете просто сказать d.getMonth () & Lt ; 9:, но я подумал, что использование 1 поможет облегчить понимание.

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

Я нашел самый короткий способ сделать это:

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

добавит начальные нули ко всем одиночным, однозначным цифрам

Я обернул правильный ответ на этот вопрос в функцию, которая может добавить несколько ведущих нулей, но по умолчанию добавляет 1 нуль.

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

для работы только с числами, состоящими не более чем из 2 цифр, это также подход:

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

Упростите свою жизнь и используйте Moment.js пример кода:

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

// Now will print 30-06-2015 17:55
console.log(beginDateTime);

Вы можете указать параметры в качестве параметра для форматирования даты , Первый параметр предназначен для локали, которая может вам не понадобиться, а второй — для параметров. Для получения дополнительной информации посетите 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));

Другой вариант, использующий встроенную функцию для заполнения (но в результате получается довольно длинный код!):

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

// '12/06/2017'

И другой — манипулирование строками с помощью регулярных выражений:

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

// '2017/06/12'

Но имейте в виду, что один из них будет показывать год в начале start и день в конце end Глядя на вывод

Следующие цели предназначены для извлечения конфигурации, подключите Date.protoype и применить настройки.

Я использовал Array для хранения временных блоков, и когда я push()this как объект Date, он возвращает мне длину для итерации. Когда я закончу, я могу использовать join. Если вы хотите, чтобы экземпляры имели свои собственные массивы, создайте их в функции, а не в прототипе. return.

Это, кажется, работает довольно быстро: 0,016 мс

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

Но когда мы говорим о адаптивных экранах и если по какой-то причине мы хотим обрабатывать их с помощью jQuery, http://jsfiddle.net/tive/U4MZ3/

Я хотел бы создать собственную дату вспомогательный, который выглядит следующим образом:

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

(см. также this Fiddle С чем вы столкнулись

Добавьте некоторые отступы, чтобы разрешить начальный ноль — там, где это необходимо — и объедините их, используя выбранный в качестве строки разделитель.

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

Как предлагает @John Henckel, начиная с использования { *} toISOString () облегчает задачу Добавление к ответу @modiX, вот что работает … НЕ ОСТАВЛЯЙТЕ ЭТО как пустой

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

javascript — ‘console’ — неопределенная ошибка для Internet Explorer { *} Я использую Firebug и на моей странице есть несколько утверждений, таких как:

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
  }