Я пытаюсь использовать JS, чтобы превратить date object
в строку в YYYYMMDD
формате. Есть более простой способ , чем конкатенации Date.getYear()
, Date.getMonth()
и Date.getDay()
?
javascript
date
IVR Avenger
источник
источник
Ответы:
Измененный кусок кода, который я часто использую:
источник
[1]
на.length===2
, потому что индексатор для строки не полностью поддерживается. Смотрите этот ответ по причинам, почему.[this.getFullYear(), mm<10 ? '0'+ mm: mm, dd<10 ? '0'+ dd : dd].join('.')
var mm = (this.getMonth() + 101).toString().substring(1, 3)
Мне не понравилось добавление к прототипу. Альтернативой будет:
источник
rightNow
переменная вокруг, вы можете обернутьnew Date
и вернуть все обратно в одну строку:(new Date()).toISOString().slice(0,10).replace(/-/g,"")
YYYYMMDDHHmmSSsss
, поэтому я сделал этоvar ds = (new Date()).toISOString().replace(/[^0-9]/g, "");
. Довольно просто, но должно быть заключено в капсулу.rightNow.setMinutes(rightNow.getMinutes() - rightNow.getTimezoneOffset()); rightNow.toISOString().slice(0,10)
Вы можете использовать
toISOString
функцию:Это даст вам формат "гггг-мм-дд".
источник
Moment.js может быть вашим другом
источник
var formattedDate = moment().format('YYYYMMDD');
Если вам не нужно чистое решение JS, вы можете использовать jQuery UI для выполнения этой работы:
Я обычно не люблю импортировать слишком много библиотек. Но jQuery UI настолько полезен, что вы, вероятно, будете использовать его где-то еще в своем проекте.
Посетите http://api.jqueryui.com/datepicker/ для большего количества примеров
источник
Это одна строка кода, которую вы можете использовать для создания
YYYY-MM-DD
строки сегодняшней даты.источник
toISOString()
что даст 2015-12-31T22: 00: 00 GMT +0 (двумя часами ранее).источник
new Date('Sun Mar 31 2019 00:00:00.000').toLocaleString('en-us', {year: 'numeric', month: '2-digit', day: '2-digit'}).replace(/(\d+)\/(\d+)\/(\d+)/, '$3-$1-$2');
В дополнение к ответу oo, я бы хотел порекомендовать отделить логические операции от возврата и вместо этого поместить их в тройные переменные.
Кроме того, используйте
concat()
для обеспечения безопасной конкатенации переменныхисточник
("00" + (this.getDate())).slice(-2)
для получения двухзначных чисел. Нет оператора «if» или «?:» И меньше вызовов функции .getX (). Если не чуть быстрее, то, по крайней мере, более читабельно.Мне не нравится модифицировать нативные объекты, и я думаю, что умножение яснее, чем строка, дополняющая принятое решение.
Скрипка: http://jsfiddle.net/gbdarren/Ew7Y4/
источник
.replace('-', '')
чтобы ответить на вопрос ОП), в то время как вы были верны первоначальному вопросу ОП, и для этого не требовался этот дополнительный шаг. Отлично!Простое решение JS (ES5) без каких-либо возможных проблем с переходом по дате, вызванных печатью Date.toISOString () в UTC:
Это в ответ на комментарий @ weberste к ответу @Pierre Guilbert.
источник
toISOString
вернуть несколько последовательных дефисов?источник
источник
new Date()
создает новый объект даты, который является просто оберткой вокруг nr. мс с 1970/01/01 00: 00: 00.000 UTC. ЗатемtoISOString
распечатывает в местном часовом поясе.Другой способ заключается в использовании
toLocaleDateString
с локалью, которая имеет стандарт формата даты с прямым порядком байтов , такой как Швеция, Литва, Венгрия, Южная Корея, ...:Чтобы удалить разделители (
-
), нужно просто заменить нецифровые символы:Это не имеет потенциальной ошибки, которую вы можете получить с форматами даты UTC: дата UTC может быть одним выходным по сравнению с датой в местном часовом поясе.
источник
Вы можете просто использовать этот однострочный код, чтобы получить дату в году
источник
Немного упрощенная версия для самого популярного ответа в этой теме https://stackoverflow.com/a/3067896/5437379 :
источник
dateformat - очень используемый пакет.
Как пользоваться:
Загрузите и установите
dateformat
из NPM. Требуйте это в вашем модуле:const dateFormat = require('dateformat');
а затем просто отформатировать ваши вещи:
const myYYYYmmddDate = dateformat(new Date(), 'yyyy-mm-dd');
источник
Этот парень здесь => http://blog.stevenlevithan.com/archives/date-time-format написал
format()
функцию дляDate
объекта Javascript , поэтому его можно использовать с известными литеральными форматами.Если вам нужно полнофункциональное форматирование даты в Javascript вашего приложения, используйте его. В противном случае, если вы хотите сделать что-то одно, то объединение getYear (), getMonth (), getDay (), вероятно, будет проще всего.
источник
Исходя из ответа @ oo, вы получите строку даты в соответствии со строкой формата. Вы можете легко добавить двухзначное регулярное выражение для года и миллисекунд и тому подобное, если вам это нужно.
Однако я не знаю, насколько это эффективно, особенно с точки зрения совершенства, потому что в нем много регулярных выражений. Вероятно, он мог бы использовать какую-то работу, которой я не владею pure js.
источник
Этот код исправлен в ответе Пьера Гильберта:
(работает даже через 10000 лет)
источник
Похоже, что mootools предоставляет
Date().format()
: https://mootools.net/more/docs/1.6.0/Types/DateЯ не уверен, стоит ли включать это только для этой конкретной задачи.
источник
Я обычно использую код ниже, когда мне нужно сделать это.
Чтобы объяснить, .slice (-2) дает нам последние два символа строки.
Поэтому, несмотря ни на что, мы можем добавить «0» к дню или месяцу и просто спросить последние два, так как это всегда те два, которые мы хотим.
Поэтому, если MyDate.getMonth () вернет 9, это будет:
поэтому добавление .slice (-2) дает нам два последних символа:
Но если date.getMonth () вернет 10, это будет:
поэтому добавление .slice (-2) дает нам последние два символа, или:
источник
Если вы используете AngularJ (до 1.5), вы можете использовать фильтр даты :
источник
Отвечая на другой за простоту и удобочитаемость.
Кроме того, редактирование существующих предопределенных членов класса новыми методами не рекомендуется:
источник
Как насчет Day.js ?
Это всего 2 КБ, и вы тоже можете
dayjs().format('YYYY-MM-DD')
.https://github.com/iamkun/dayjs
источник
Если вы не против включить дополнительную (но небольшую) библиотеку, Sugar.js предоставляет множество полезных функций для работы с датами в JavaScript. Чтобы отформатировать дату, используйте функцию форматирования :
источник
источник
Дата-короткий код на помощь!
источник
Используйте padStart :
источник
Вот более общий подход, который позволяет и дату и время компоненты и идентично сортируется как число или строка.
На основе порядкового номера формата Date ISO, конвертируйте в местный часовой пояс и удалите нецифровые символы. то есть:
Применение
источник
Родной Javascript:
источник