JS에서 날짜의 요일 이름


82

제 3 자로부터받은 날짜 (예 : "05/23/2014")가 지정된 날짜의 이름을 표시해야합니다.

을 사용해 보았지만 Date날짜 만 얻습니다.

오늘의 이름을 얻는 올바른 방법은 무엇입니까?


날짜로 변환 한 다음 호출 getDay()하여 요일 번호 (0-6, 0 == 일요일)를 가져온 다음 요일 이름 배열을 사용하여 번호를 이름에 매핑합니다.
forgivenson

답변:


122

Date.getDay()일요일에는 0을, 토요일에는 최대 6을 반환 하는 메서드를 사용할 수 있습니다 . 따라서 요일 이름의 이름으로 배열을 간단히 만들 수 있습니다.

var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
var d = new Date(dateString);
var dayName = days[d.getDay()];

다음 dateString은 타사 API에서받은 문자열입니다.

또는 요일 이름의 처음 세 글자를 원하는 경우 Date개체의 기본 제공 toString방법을 사용할 수 있습니다 .

var d = new Date(dateString);
var dayName = d.toString().split(' ')[0];

d.toString()출력 의 첫 번째 단어 가 3 글자 요일 이름이됩니다.


14
이것은 아마도 최선의 방법이 아닐 것입니다. 표준 Javascript Date 클래스는 전체 이름을 얻는 방법을 제공합니다. 내 대답을 살펴보십시오.
RWC

그러나 ... "표준 자바 스크립트 날짜 클래스"는 모든 브라우저에서 작동하지 않습니다.
Hernán Eche

@ HernánEche에 따르면 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… 모든 브라우저는 Date를 잘 지원합니다. 어떤 브라우저가 작동하지 않습니까?
Joeytje50

@ Joeytje50 웹보기 자바 FX에서,하지만 좋아, '브라우저'로 인정하지 않습니다
에르난 Eche에게

@ HernánEche JavaFx는 내가 인터넷에서 찾을 수있는 한 JavaScript가 아니라 Java입니다. 이러한 언어는 완전히 다르므로 Java와 관련된 것을 찾아보아야합니다. 이에 대한 자세한 내용은 softwareguild.com/faq/difference-between-java-and-javascript (또는 "자바와 자바 스크립트의 차이"에있는 Google의 다른 결과)를 참조하십시오.
Joeytje50

173

Ahum, 3 년 후 ...

왜 아무도 표준 자바 스크립트 Date 클래스 (Callum Linington 제외)에서 제공하는 메소드를 사용하지 않습니까?

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

날짜에서 요일 이름 가져 오기 :

function getDayName(dateStr, locale)
{
    var date = new Date(dateStr);
    return date.toLocaleDateString(locale, { weekday: 'long' });        
}

var dateStr = '05/23/2014';
var day = getDayName(dateStr, "nl-NL"); // Gives back 'Vrijdag' which is Dutch for Friday.

모든 평일을 배열로 가져 오기 :

function getWeekDays(locale)
{
    var baseDate = new Date(Date.UTC(2017, 0, 2)); // just a Monday
    var weekDays = [];
    for(i = 0; i < 7; i++)
    {       
        weekDays.push(baseDate.toLocaleDateString(locale, { weekday: 'long' }));
        baseDate.setDate(baseDate.getDate() + 1);       
    }
    return weekDays;
}

var weekDays = getWeekDays('nl-NL'); // Gives back { 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag', 'zondag'} which are the days of the week in Dutch.

미국 날짜의 경우 'en-US'를 로케일로 사용하십시오.


2
내 솔루션을 게시 할 때이 방법이 존재한다는 사실을 전혀 몰랐습니다. 참으로 아주 좋은 솔루션입니다. 이것이 직접 국제화를 제공하는 것도 좋습니다. 또한 새로운 것을 배우는 것도 좋습니다. : P
Joeytje50

1
링크 한 페이지에 따르면 모바일 플랫폼의 로케일과 완전히 호환되지 않는 것 같기 때문에 일부 사람들이 사용하지 않을 수 있습니다.
John

@John Jun : 맞습니다. 현재 모바일 장치의 대부분의 브라우저에서 지원합니다. 가장 주목할만한 것은 기본 Android 브라우저는 그렇지 않다는 것입니다. Android의 Chrome은 그렇습니다. (어쨌든 Android에서 Chrome을 사용하는 것이 좋습니다 .. 다른 논의가 있습니다.)
RWC

IE10에서는 부분적으로 만 작동합니다. 평일은 인식되지만 'short'를 지정하더라도 항상 긴 이름을 반환합니다. 'short'는 Chrome에서 작동합니다. 또한 IE10은 'month'키워드를 인식하지 못합니다. 'long'과 함께 사용하면 'Thu Jan 1 1970'과 같은 날짜 만 반환하는 반면 Chrome은 긴 월 이름을 반환합니다.
Larphoid

흠, 다시 말하겠습니다. 좀 더 손을 댄 후에 IE10은 로케일이 아닌 사용자가 지정한 어떤 것도 신경 쓰지 않는 것 같습니다. 항상 OS 로케일에 따라 긴 이름으로 전체 날짜를 반환합니다.
Larphoid


17

Date.toLocaleString () 메서드를 사용합니다.

new Date(dateString).toLocaleString('en-us', {weekday:'long'})

9
var days = [
    "Sunday",
    "Monday",
    "...", //etc
    "Saturday"
];

console.log(days[new Date().getDay()]);

간단하고 JavaScript 매뉴얼에서 Date 객체를 읽으십시오.

읽을 수있는 문자열을 가져 오는 등 날짜로 다른 작업을 수행하려면 다음을 사용합니다.

var d = new Date();
d.toLocaleString();

시간 또는 날짜 사용을 원하는 경우 :

d.toLocaleTimeString();
d.toLocaleDateString();

다음을 수행하여 날짜를 구문 분석 할 수 있습니다.

var d = new Date(dateToParse);

또는

var d = Date.parse(dateToParse);

days [Date.now (). getDay ()는 Date.now ()가 날짜가 아닌 숫자를 반환하기 때문에 잘못되었습니다.
tronman

그것은해야days[new Date().getDay()]
캘럼 Linington에게

3

이것 좀보세요 :

var event = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));

var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };

console.log(event.toLocaleDateString('de-DE', options));
// expected output: Donnerstag, 20. Dezember 2012

console.log(event.toLocaleDateString('ar-EG', options));
// expected output: الخميس، ٢٠ ديسمبر، ٢٠١٢

console.log(event.toLocaleDateString('ko-KR', options));
// expected output: 2012년 12월 20일 목요일

출처 : Mozilla Doc


3

가장 쉽고 간단한 방법 :

var days = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
var dayName = days[new Date().getDay()];

2

나는 다른 사람이 더 나은 것을 생각해 내면 지나치게 복잡한 솔루션의 팬이 아닙니다.

any-name.js

var today = new Date().toLocaleDateString(undefined, {
    day: '2-digit',
    month: '2-digit',
    year: 'numeric',
    weekday: 'long'
});
any-name.html
<script>
    document.write(today);
</script>

1

당신은 개체를 사용할 수 있습니다

var days = {
   'Mon': 'Monday',
   'etc..': 'etc..',
   'Fri': 'Friday'
}

var date = new Date().toString().split(' ')[0]; //get day abreviation first
console.log(days[date]);

1

이 코드를 사용해보십시오 :

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

이것은 문자열 형식으로 요일 이름을 제공합니다.


1
와 솔루션 toLocaleString은 이년 이전에, 왜 대답이 필요 게시?
RobG

1

솔루션 No.1

var today = new Date();

  var day = today.getDay();

  var days = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];

  var dayname = days[day];

  document.write(dayname);

솔루션 No.2

      var today = new Date();

  var day = today.getDay();

  switch(day){
    case 0:
    day = "Sunday";
    break;

    case 1:
    day = "Monday";
    break;

    case 2:
    day ="Tuesday";
    break;

    case 3:
    day = "Wednesday";
    break;

    case 4:
    day = "Thrusday";
    break;

    case 5:
    day = "Friday";
    break;

    case 6:
    day = "Saturday";
    break;
  }


document.write(day);

1

최단 1 개 라이너

Array가 일요일부터 시작되도록하려면 UTC 요일을 6에서 5로 변경하십시오.

const getWeekDays = (locale) => [...Array(7).keys()].map((v)=>new Date(Date.UTC(1970, 0, 6+v)).toLocaleDateString(locale, { weekday: 'long' }));

console.log(getWeekDays('de-DE')); 



0

그냥 사용하세요 :

function getWeekDayNames(format = 'short', locale = 'ru') {
  const names = [];
  const date = new Date('2020-05-24');
  let days = 7;

  while (days !== 0) {
    date.setDate(date.getDate() + 1);
    names.push(date.toLocaleDateString(locale, { weekday: format }));
    days--;
  }

  return names;
}

여기에서 읽을 수있는 형식에 대해 문서 DateTimeFormat


0

한 줄 솔루션 :

const day = ["sunday","monday","tuesday","wednesday","thursday","friday","saturday"][new Date().getDay()]

-1

최선의 방법은 아니지만 대신 배열을 사용하십시오. 이것은 단지 대체 방법입니다.

http://www.w3schools.com/jsref/jsref_getday.asp

var date = new Date();
var day = date.getDay();

여기에 게시하기 전에 실제로 Google을 사용해야합니다.

다른 사람들이 배열 메서드를 게시했기 때문에 switch 문을 사용하는 다른 방법을 보여 드리겠습니다.

switch(day) {
    case 0:
        day = "Sunday";
        break;
    case 1:
        day = "Monday";
        break;

    ... rest of cases

    default:
        // do something
        break;
}

위의 방법은 작동하지만 배열이 더 나은 대안입니다. if()문 을 사용할 수도 있지만 switch 문이 if 문보다 훨씬 깨끗합니다.


1
이것은 요일이 아닌 0-6의 숫자 값을 반환합니다.
Casey Falk 2014

거기에서 처리하고 하루로 변환 할 수 있습니다.
Nicolas

1
사실입니다. 이것은 OP의 질문에 대한 답변이 아니라는 것을 알려 드리는 것입니다.
Casey Falk 2014

A switch? 왜 switch간단한 대신 a를 사용 Array합니까? 내 말은, 다른 답변에 대한 대안이라고 생각합니다 ...하지만 거룩한 글쓰기 시간, 배트맨 ... : /
Casey Falk

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