요일과 월을 얻는 방법은 무엇입니까?


124

Javascript에 대해 잘 모르고 내가 찾은 다른 질문은 필요한 정보를 얻는 것뿐만 아니라 날짜 작업과 관련이 있습니다.

객관적인

아래 형식으로 날짜를 얻고 싶습니다.

2011 년 1 월 27 일 목요일 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()할까요?

답변:


233

예, 어레이가 필요합니다.

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

또는 date.js 라이브러리를 사용할 수 있습니다 .


편집하다:

이러한 기능을 자주 사용하려면 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();

2
@Will : 천만에요. 참고로이 작업을 자주 수행하는 경우 기능을 Date객체 로 쉽게 프로토 타입 할 수 있습니다 . 잠시 후에 업데이트하겠습니다.
user113716 2011 년

3
데이터를 현지화하면 단일 언어로만 구성된 배열이 필요하지 않습니다! selectedLocale = 'en-us'; selectedDate.toLocaleString (selectedLocale, {월 : "long"});
Ryan Loggerythm

방금이 작업을 수행했지만 일요일이 아닌 월요일을 배열의 첫 번째 요소로 사용해야했습니다. 그래도 잘 작동합니다.
nrowegt

4
아니 아니 아니 아니. 표준 javascript Date 클래스를 사용하십시오. 배열이나 추가 라이브러리가 필요하지 않습니다. 내 대답보기 : stackoverflow.com/a/50293232/760777
RWC

52

표준 자바 스크립트 Date 클래스를 사용합니다. 어레이가 필요 없습니다. 추가 라이브러리가 필요하지 않습니다.

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString을 참조 하십시오.

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


@RWC 이것은 좋지만 나머지 날짜 부분없이 평일 만 얻을 수 있습니까? IE saturday대신 saturday, 9th february 2019.
Vladimir Nul

4
@Valdimir Nul : var prnDt = 'Printed on'+ new Date (). toLocaleDateString ( 'en-us', {weekday : 'long'}); console.log (prnDt);
RWC

이를 수행하는 가장 좋은 방법입니다.
Diego Victor de Jesus

@Vladimir Firefox에 문제가 있습니다. 시간이 항상 표시됩니다.new Date().toLocaleTimeString(language, { weekday: 'long'}).split(' ')[0]
Bruno L.

8

또한 할 수있는 한 가지는 다음과 같이 요일을 반환하도록 날짜 개체를 확장하는 것입니다.

Date.prototype.getWeekDay = function() {
    var weekday = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
    return weekday[this.getDay()];
}

따라서 date.getWeekDay (); 만 호출 할 수 있습니다.


7

@ L-Ray 가 이미 제안 했듯이 moment.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>


5

불행히도 Datejavascript의 객체는 숫자 형식으로 만 월에 대한 정보를 반환합니다. 당신이 할 수있는 더 빠른 일은 월의 배열을 생성하고 (자주 변경해서는 안됩니다!) 숫자에 따라 이름을 반환하는 함수를 생성하는 것입니다.

이 같은:

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;

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

ru-RU는 en-US (미국 영어) 또는 en-GB (영국 영어)입니다.
Sarah


3

에서 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString

toLocaleDateString () 메소드는 날짜 일 부분의 언어 표현 구분 된 문자열을 반환한다. 새로운 로케일 및 옵션 인수를 사용하면 응용 프로그램에서 형식 지정 규칙을 사용해야하는 언어를 지정하고 함수의 동작을 사용자 지정할 수 있습니다. 로케일 및 옵션 인수를 무시하는 이전 구현에서는 사용 된 로케일과 반환되는 문자열 형식이 전적으로 구현에 따라 다릅니다.

긴 형식 :

const options = { weekday: 'long' };
const date = new Date();
console.log(date.toLocaleDateString('en-US', options));

짧막 한 농담:

console.log(new Date().toLocaleDateString('en-US', { weekday: 'long' }));

참고 : 로케일에 대한 다른 언어 옵션이 있지만 여기에서 미국 영어에 대한 옵션이 제공됩니다.


2

예를 들어 현지화 된 날짜 출력을 구문 분석하는 datejs 를 볼 수 있습니다 .

귀하의 예에서 형식은 다음과 같습니다.

new Date().toString('dddd, d MMMM yyyy at HH:mm:ss') 

1

간단합니다. toLocaleDateString ()에 요일 만 표시하도록 옵션을 설정하여 이름을 가져올 수 있습니다. 예를 들면 :

(new Date ()). toLocaleDateString ( 'en-US', {weekday : 'long'})은 요일 만 반환합니다. 그리고 (new Date ()). toLocaleDateString ( 'en-US', {month : 'long'})은 해당 연도의 월만 반환합니다.


0
  function currentDate() {
      var monthNames = [ "JANUARY", "FEBRUARY", "MARCH", "APRIL", "MAY", "JUNE",
                     "JULY", "AUGUST", "SEPTEMBER", "OCTOBER", "NOVEMBER", "DECEMBER" ];
      var days = ['SUNDAY','MONDAY','TUESDAY','WEDNESDAY','THURSDAY','FRIDAY','SATURDAY'];                       
      var today = new Date();
      var dd   = today.getDate();
      var mm   = monthNames[today.getMonth()]; 
      var yyyy = today.getFullYear();
      var day  = days[today.getDay()];
      today = 'Date is :' + dd + '-' + mm + '-' + yyyy;
      document.write(today +"<br>");
      document.write('Day is : ' + day );
  }
  currentDate();

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.