Как я могу сгенерировать название месяца (например, октябрь / октябрь) из этого объекта даты в JavaScript?
var objDate = new Date("10/11/2009");
Как я могу сгенерировать название месяца (например, октябрь / октябрь) из этого объекта даты в JavaScript?
var objDate = new Date("10/11/2009");
Ответы:
Укороченная версия:
Примечание (2019-03-08) - этот ответ, который я написал в 2009 году, устарел. Смотрите ответ Дэвида Стори для лучшего решения.
источник
new Date()
возврат,Tue Sep 06 2011 20:02:25 GMT+0200 (CEST)
который ясно означает, что объект Date уже имеет все это внутренне определенное (названия месяца и дня недели), он не является общедоступным, поэтому мы должны напечатать все это снова. :(String#split
сtoString
илиtoDateString
.Теперь это можно сделать с помощью интерфейса ECMAScript Internationalization API:
'long'
использует полное название месяца,'short'
короткое имя и'narrow'
более минимальную версию, например первую букву в алфавитных языках.Вы можете поменять локаль с браузера
'default'
на любую, какую пожелаете (например'en-us'
), и она будет использовать правильное название для этого языка / страны.С
toLocaleString
API вы должны передать в локали и варианты каждый раз. Если вы собираетесь использовать одну и ту же информацию о локали и параметры форматирования для нескольких разных дат, вы можете использоватьIntl.DateTimeFormat
вместо этого:Для получения дополнительной информации см. Мой пост в блоге об Интернационализации API .
источник
Вот еще один, с поддержкой локализации :)
Вы можете легко добавить поддержку других языков:
источник
Date.locale
естьundefined
. это отличный ответ для других реализаций JS!Если вы не возражаете против расширения прототипа Date (и есть некоторые веские причины не хотеть этого делать), вы можете придумать очень простой метод:
Эти функции будут применяться ко всем объектам Date в JavaScript.
источник
Я от всей души рекомендую
format
функцию из библиотеки moment.js , которую вы можете использовать следующим образом:Используйте «ММММ» вместо «МММ», если вам нужно полное название месяца
В дополнение к длинному списку других функций, он имеет сильную поддержку интернационализации .
источник
Luxon
иdate-fns
, но опять же, в настоящее время широко поддерживается браузер для Интернационализации API в настоящее время .Может использоваться как
источник
Это может сделать некоторый общий простой процесс из объекта даты.
Или вы можете сделать прототип даты как
Пример:
var dateFormat3 = new Date().getMonthName();
# March
var dateFormat4 = new Date().getFormatDate();
# 16 March, 2017
источник
Вы можете использовать datejs для этого. Проверьте FormatSpecifiers , MMMM дает вам название месяца:
И datejs получил это локализованным для более чем 150 локалей! Посмотреть здесь
источник
Пытаться:
источник
Вот способ, который не зависит от жестко заданного массива и поддерживает несколько локалей.
Если вам нужен целый массив:
Применение:
Если вам нужен только выбранный месяц (быстрее):
Применение:
Протестировано и отлично работает на Chrome и IE 11. На Mozilla необходимы некоторые модификации, потому что он возвращает всю дату.
источник
toLocaleString
К сожалению, лучший способ извлечь название месяца из представления UTCString:
источник
Вместо того, чтобы объявлять массив, который содержит все название месяца, а затем указывать с индексом, мы также можем записать его в более короткой версии, как показано ниже:
источник
MAY 1, 2015 AT 12:00:00 AM GMT-4
(при использовании{ month: "long" }
параметров)new Date().toLocaleString(navigator.language, { month: "short" })
источник
Естественным форматом в наши дни является использование Moment.js.
Способ получения месяца в строковом формате очень прост в Moment.js, не нужно жестко кодировать названия месяцев в своем коде: чтобы получить текущий месяц и год в формате названия месяца и полного года (май 2015 года):
источник
Luxon
иdate-fns
, но опять же, в настоящее время широко поддерживается браузер для Интернационализации API в настоящее время .Еще один способ форматирования даты
источник
Вы можете использовать один из нескольких доступных форматеров даты. Поскольку это входит в спецификацию JavaScript, оно будет доступно как в браузерном, так и в серверном режимах.
например
Есть и другие на https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
источник
Если вы не хотите использовать внешнюю библиотеку или хранить массив названий месяцев, или если API интернационализации ECMAScript недостаточно хорош из-за совместимости с браузером, вы всегда можете сделать это старомодным способом, извлекая информацию из дата выхода:
Это даст вам сокращенное название месяца, например, октябрь. Я полагаю, что дата придет во всевозможных форматах в зависимости от инициализации и вашей локали, поэтому взгляните на то, что
toDateString()
возвращает, и пересчитайте вашиsubstring()
значения на основе этого.источник
Если вы используете jQuery, вы, вероятно, также используете jQuery UI, что означает, что вы можете использовать $ .datepicker.formatDate () .
источник
Мое лучшее решение заключается в следующем:
источник
С моментами просто используйте формат записи.
источник
moment
является очень большой библиотекой, и это слишком излишне . Современные альтернативы включаютLuxon
иdate-fns
, но опять же, в настоящее время широко поддерживается браузер для Интернационализации API в настоящее время .Это также можно сделать, если вы используете кендо.
Вот список форматеров с сайта кендо :
источник
Вы можете просто использовать Date.toLocaleDateString () и проанализировать требуемую дату в качестве параметра
Вы можете найти больше информации в документации Firefox
источник
Если вы не хотите использовать момент и хотите отобразить название месяца -
источник
Для меня это лучшее решение,
а также для TypeScript
Выход
источник
Храните имена в массиве и ищите по индексу месяца.
JavaScript getMonth () метод
источник
var month = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ];
? Гораздо короче, чем добавление их по отдельности ...У меня есть частичное решение, которое я придумал. Он использует регулярное выражение для извлечения названия месяца и дня. Но когда я просматриваю «Регион» и «Язык» (Windows), я понимаю, что разные культуры имеют разный порядок форматирования ... может быть, лучше использовать шаблон регулярного выражения.
источник
Просто распространяясь на многие другие отличные ответы - если вы используете jQuery - вы можете просто сделать что-то вроде
где
date
равноvar d = new Date(somevalue)
. Основное преимущество этого в per @nickf говорит о том, что нужно избегать глобального пространства имен.источник
Чтобы получить массив названий месяцев:
http://jsfiddle.net/polinux/qb346/
источник
Просто напишите простую обертку вокруг
toLocaleString
:источник
Быстрый взлом, который я использовал, который работает хорошо:
источник