Я создал этот скрипт для расчета даты за 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;
Если бы кто-то мог показать мне, где вставить их в сценарий, я был бы очень благодарен.
javascript
date
date-format
time-format
leading-zero
Джулиан Коутс
источник
источник
Ответы:
Попробуйте это: http://jsfiddle.net/xA5B7/
РЕДАКТИРОВАТЬ:
Чтобы объяснить,
.slice(-2)
дает нам последние два символа строки.Так что, несмотря ни на что, мы можем добавить
"0"
день или месяц и просто спросить последние два, так как это всегда те два, которые мы хотим.Так что если
MyDate.getMonth()
вернется9
, то будет:так что добавление
.slice(-2)
к этому дает нам два последних символа:Но если
MyDate.getMonth()
вернется10
, то будет:поэтому добавление
.slice(-2)
дает нам последние два символа, или:источник
MyDate.setDate(MyDate.getDate() + 20);
slice()
прием принятого ответа примерно на 1/10 секунды быстрее, чем прием @Alerosspad()
в 1 миллион итераций. jsFiddle . "заплати свои деньги, сделай свой выбор".Вот пример из документации по объектам Date в Mozilla Developer Network, использующей пользовательскую функцию «pad» без необходимости расширения прототипа Javascript Number. Удобная функция, которую они приводят в качестве примера:
И ниже это используется в контексте.
источник
pad
выводятся только строки.Новый современный способ сделать это - использовать
toLocaleDateString
, потому что он не только позволяет форматировать дату с правильной локализацией, вы даже можете передавать опции форматирования для архивирования желаемого результата:Когда вы пропустите первый аргумент, он определит язык браузера. Кроме того, вы также можете использовать
2-digit
опцию года.Если вам не нужно поддерживать старые браузеры, такие как IE10, это самый чистый способ сделать эту работу. IE10 и более низкие версии не будут понимать аргумент параметров.
Примечание: Кроме того, есть также
toLocaleTimeString
, если вы хотите локализовать или отформатировать время даты.источник
Вы можете определить функцию "str_pad" (как в php):
источник
Для вас, людей из будущего (ECMAScript 2017 и далее)
Решение
Explaination
String.prototype.padStart(targetLength[, padString])
добавляет как можно большеpadString
вString.prototype
мишень таким образом, что новая длина мишениtargetLength
.пример
источник
.padStart(2, '0')
так, поскольку вторым параметром является строка, хотя, вероятно, это не будет иметь значения, если вы не используете TypeScript//в использовании:
источник
Я нашел самый короткий способ сделать это:
добавит начальные нули ко всем одиночным, однозначным
источник
источник
Вы можете использовать троичный оператор для форматирования даты как «если».
Например:
Так
будет похоже на оператор if, где, если getDate () возвращает значение меньше 10, затем возвращает «0» + Дата, или же возвращает дату, если больше 10 (так как нам не нужно добавлять ведущий 0). То же самое за месяц.
Изменить: Забыл, что getMonth начинается с 0, поэтому добавил +1, чтобы учесть это. Конечно, вы также можете просто сказать d.getMonth () <9:, но я подумал, что использование +1 поможет сделать его более понятным.
источник
Существует другой подход для решения этой проблемы, использующий
slice
в JavaScript.datestring
дата возвращения с форматом , как вы ожидаете: 2019-09-01Другой подход заключается в использовании
dateformat
библиотеки: https://github.com/felixge/node-dateformatисточник
Сделайте вашу жизнь проще и используйте Moment.js пример кода:
источник
источник
Вы можете предоставить параметры в качестве параметра для форматирования даты. Первый параметр предназначен для локали, которая может вам не понадобиться, а второй - для параметров. Для получения дополнительной информации посетите https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString
источник
Я обернул правильный ответ на этот вопрос в функцию, которая может добавлять несколько ведущих нулей, но по умолчанию добавляет 1 ноль.
для работы только с числами, не более 2 цифр, это тоже подход:
источник
Другой вариант, используя встроенную функцию для заполнения (но в результате получается довольно длинный код!):
И еще, манипулируя строками с помощью регулярных выражений:
Но имейте в виду, что каждый покажет год в начале и день в конце .
источник
Если добавить к ответу @modiX, это то, что работает ... НЕ ОСТАВЛЯЙТЕ ЭТО как пустое
источник
Вот очень простой пример того, как вы можете справиться с этой ситуацией.
источник
Следующее предназначено для извлечения конфигурации, подключения
Date.protoype
и применения конфигурации.Я использовал
Array
для хранения фрагментов времени, и когда яpush()
this
какDate
объект, он возвращает мне длину для итерации. Когда я сделал, я могу использоватьjoin
наreturn
значение.Кажется, это работает довольно быстро: 0,016 мс
демо: http://jsfiddle.net/tive/U4MZ3/
источник
Что я хотел бы сделать, это создать свой собственный помощник по дате, который выглядит следующим образом:
(см. также эту скрипку )
источник
Добавьте некоторые отступы, чтобы позволить ведущий ноль - где это необходимо - и объедините, используя выбранный разделитель в качестве строки.
источник
Как говорит @Джон Хенкель, начало использования метода toISOString () облегчает задачу
источник
источник
попробуйте это для основной функции, библиотеки не требуются
источник
источник
Вы можете использовать String.slice (), который извлекает часть строки и возвращает ее как новую строку, не изменяя исходную строку:
Или вы также можете использовать библиотеку, например Moment.js, для форматирования даты:
источник