Как получить день недели и месяц года?
Я мало знаю о Javascript, и другие вопросы, которые я нашел, связаны с операциями по датам, а не только с получением информации, как мне это нужно.
цель
Я хочу получить дату, как показано ниже-форматированный:
напечатано в четверг, 27 января 2011 в 17:42:21
до сих пор, я получил следующее:
var now = new Date();
var h = now.getHours();
var m = now.getMinutes();
var s = now.getSeconds();
h = checkTime(h);
m = checkTime(m);
s = checkTime(s);
var prnDt = "Printed on Thursday, " + now.getDate() + " January " + now.getFullYear() + " at " + h + ":" + m + ":" s;
мне теперь нужно знать, как получить день недели и месяц года (их имена.)
есть ли простой способ сделать это, или я должен рассмотреть вопрос об использовании массивов, где я бы просто индексировать правильное значение с помощью now.getMonth()
и now.getDay()
?
9 ответов:
Да, вам понадобятся массивы.
var days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday']; var months = ['January','February','March','April','May','June','July','August','September','October','November','December']; var day = days[ now.getDay() ]; var month = months[ now.getMonth() ];
или вы можете использовать дата.js библиотека.
EDIT:
Если вы собираетесь использовать их часто, вы можете расширить
Date.prototype
для доступности.(function() { var days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday']; var months = ['January','February','March','April','May','June','July','August','September','October','November','December']; Date.prototype.getMonthName = function() { return months[ this.getMonth() ]; }; Date.prototype.getDayName = function() { return days[ this.getDay() ]; }; })(); var now = new Date(); var day = now.getDayName(); var month = now.getMonthName();
одна вещь, которую вы также можете сделать, это расширить объект даты, чтобы вернуть будний день:
Date.prototype.getWeekDay = function() { var weekday = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]; return weekday[this.getDay()]; }
Итак, вы можете только назвать дату.getWeekDay ();
Как @L-Ray уже предложил, Вы можете посмотреть в момент.js а также
пример
var today = moment(); var result = { day: today.format("dddd"), month: today.format("MMM") } document.write("<pre>" + JSON.stringify(result,0,4) + "</pre>");
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.13.0/moment.min.js"></script>
используйте стандартный класс даты javascript. нет необходимости в массивах. Нет необходимости в дополнительных библиотеках.
var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric', hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: false }; var prnDt = 'Printed on ' + new Date().toLocaleTimeString('en-us', options); console.log(prnDt);
к сожалению,
Date
объект в javascript возвращает информацию о месяцах только в числовом формате. Быстрее всего вы можете создать массив месяцев (они не должны часто меняться!) и создать функцию, которая возвращает имя на основе числа.что-то вроде этого:
function getMonthNameByMonthNumber(mm) { var months = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"); return months[mm]; }
ваш код становится:
var prnDt = "Printed on Thursday, " + now.getDate() + " " + getMonthNameByMonthNumber(now.getMonth) + " "+ now.getFullYear() + " at " + h + ":" + m + ":" s;
используя http://phrogz.net/JS/FormatDateTime_JS.txt Вы можете просто:
var now = new Date; var prnDt = now.customFormat( "Printed on #DDDD#, #D# #MMMM# #YYYY# at #hhh#:#mm#:#ss#" );
var GetWeekDays = function (format) { var weekDays = {}; var curDate = new Date(); for (var i = 0; i < 7; ++i) { weekDays[curDate.getDay()] = curDate.toLocaleDateString('ru-RU', { weekday: format ? format : 'short' }); curDate.setDate(curDate.getDate() + 1); } return weekDays; }; me.GetMonthNames = function (format) { var monthNames = {}; var curDate = new Date(); for (var i = 0; i < 12; ++i) { monthNames[curDate.getMonth()] = curDate.toLocaleDateString('ru-RU', { month: format ? format : 'long' }); curDate.setMonth(curDate.getMonth() + 1); } return monthNames; };
вы можете посмотреть datejs который анализирует локализованный вывод даты, например.
форматирование может выглядеть так, в вашем примере:
new Date().toString('dddd, d MMMM yyyy at HH:mm:ss')
Это просто. Вы можете установить опцию для отображения только дней недели в toLocaleDateString (), чтобы получить имена. Например:
(новая дата()).toLocaleDateString ('en-US', {weekday:' long'}) вернется только в день недели. И (новая дата ()).toLocaleDateString ('en-US', {month:' long'}) вернет только месяц года.