programing

JS에서 날짜로부터 일 이름

codeshow 2023. 10. 4. 23:04
반응형

JS에서 날짜로부터 일 이름

제3자로부터 받는 날짜("05/23/2014" 등)가 주어진 날의 이름을 표시해야 합니다.

사용해 보았습니다.Date, 날짜만 알 수 있어요

그날의 이름을 얻기 위한 정확한 방법은 무엇입니까?

표준 JavaScript Date 클래스에서 제공하는 메서드를 사용합니다.

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

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'를 로케일로 사용합니다.

당신은 사용할 수 있습니다.Date.getDay()method는 일요일에는 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()출력, 세 글자로 된 날짜 이름이 될 것입니다.

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

new Date(dateString).toLocaleString('en-us', {weekday:'long'})
let weekday = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'][new Date().getDay()]
var days = [
    "Sunday",
    "Monday",
    "...", //etc
    "Saturday"
];

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

간단하게 자바스크립트 매뉴얼에서 날짜 객체를 읽습니다.

날짜에서 읽을 수 있는 문자열을 가져오는 것과 같은 다른 작업을 수행하려면 다음을 사용합니다.

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

시간이나 날짜만 원하는 경우:

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

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

var d = new Date(dateToParse);

아니면

var d = Date.parse(dateToParse);

지정된 날짜에서 날짜를 가져오려면 날짜를 새 날짜 개체에 전달하기만 하면 됩니다.

let date = new Date("01/05/2020");
let day = date.toLocaleString('en-us', {weekday: 'long'});
console.log(day);
// expected result = tuesday

자세한 내용을 보려면 mdn-date.prototype.toLocaleString()(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString) 로 이동하십시오.

let weekday = new Date(dateString).toLocaleString('en-us', {weekday:'long'});
console.log('Weekday',weekday);

이것을 보십시오.

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

한 줄 솔루션:

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

한 가지 옵션은 내장 기능을 사용하는 것입니다. 예를 들어:

const getDayName = (dateString) =>
  new Intl.DateTimeFormat('en-Us', { weekday: 'long' }).format(new Date(dateString));
<label for="inp">Enter a date string in the format "MM/DD/YYYY" or "YYYY-MM-DD" and press "OK":</label><br>
<input type="text" id="inp" value="01/31/2021">
<button onclick="alert(getDayName(document.getElementById('inp').value))">OK</button>

가장 쉽고 간단한 방법:

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

var dayName =['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
var day = dayName[new Date().getDay()];
console.log(day)

다음 코드를 사용해 보십시오.

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

날짜 이름을 문자열 형식으로 제공합니다.

저는 너무 복잡한 해결책을 좋아하지 않습니다. 다른 사람이 더 좋은 것을 생각해 낸다면 알려주세요 :)

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개의 라이너

배열을 일요일부터 시작하려면 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')); 

이 메서드는 임의 날짜를 설정하거나 Locale 문자열을 미리 알 필요가 없습니다.이 메서드는 미리 정의된 값과 독립적입니다.클라이언트에서 로케일을 검색할 수 있습니다.

문자열 로케일에 평일 배열을 자동으로 채웁니다.

const locale = 'en-US' // Change this based on client settings
const date = new Date()

const weekdays = []
while(!weekdays[date.getDay()]) {
  weekdays[date.getDay()] = date.toLocaleString(locale, { weekday: 'long'})
  date.setDate(date.getDate() + 1)
}

console.log(weekdays)

월의 로케일 이름도 원하는 경우,

const locale = 'en-US' // Change this based on client settings
const date = new Date()
date.setMonth(0) // Not strictly needed, but why not..
date.setDate(1) // Needed because if current date is >= 29, the month Feb can get skipped.

const months = []
while(!months[date.getMonth()]) {
  months[date.getMonth()] = date.toLocaleString(locale, { month: 'long'})
  date.setMonth(date.getMonth() + 1)
}

console.log(months)

저는 현재 이렇게 사용합니다: (보시는 것처럼 현재 날짜의 클론을 만들고 월과 날짜를 처음 발생하는 것으로 설정합니다.)

const date = new Date()

let locale = navigator.languages
    ? navigator.languages[0]
    : (navigator.language || navigator.userLanguage)
let clone = new Date(date.getFullYear(), 0, 1, 0, 0, 0, 0)

let weekdays = []
while (!weekdays[clone.getDay()]) {
  weekdays[clone.getDay()] = {
    index: clone.getDay(),
    long: clone.toLocaleString(locale, { weekday: 'long' }),
    short: clone.toLocaleString(locale, { weekday: 'short' })
  }
  clone.setDate(clone.getDate() + 1)
}
clone.setDate(clone.getDate() - weekdays.length) // Reset

let months = []
while (!months[clone.getMonth()]) {
    months[clone.getMonth()] = {
        index: clone.getMonth(),
        long: clone.toLocaleString(locale, { month: 'long' }),
        short: clone.toLocaleString(locale, { month: 'short' })
    }
    clone.setMonth(clone.getMonth() + 1)
}
clone.setMonth(clone.getMonth() - months.length) // Reset

let hours = []
while (!hours[clone.getHours()]) {
    hours[clone.getHours()] = {
        index: clone.getHours(),
        hour24: clone.toLocaleTimeString(locale, { hour12: false, hour: '2-digit', minute: '2-digit' }),
        hour12: clone.toLocaleTimeString(locale, { hour12: true, hour: 'numeric' })
    }
    clone.setHours(clone.getHours() + 1)
}
clone.setHours(clone.getHours() - hours.length) // Reset

console.log(locale)
console.log(weekdays)
console.log(months)
console.log(hours)
console.log(clone.toLocaleString())

솔루션 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);

당신은 물건을 사용할 수 있습니다.

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

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

그냥 사용하기만 하면 됩니다.

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

여기서 읽을 수 있는 형식 문서 날짜시간 형식

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

// request a weekday along with a long date
var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
console.log(date.toLocaleDateString('de-DE', options));
// → "Donnerstag, 20. Dezember 2012"

// an application may want to use UTC and make that visible
options.timeZone = 'UTC';
options.timeZoneName = 'short';
console.log(date.toLocaleDateString('en-US', options));
// → "Thursday, December 20, 2012, UTC"

// 함수로 이 문제를 해결합니다. // 요일은 "일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일"입니다.

function getDayName(dateString) {
   let dayName = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"][new Date(dateString).getDay()];
        return dayName;
    }
    let result = getDayName(10/12/2022);
    console.log(result);

최선의 방법은 아니지만 대신 배열을 사용합니다.이것은 단지 대안적인 방법일 뿐입니다.

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

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

여기에 글을 올리기 전에 구글을 꼭 사용해야 합니다.

다른 분들이 배열 방법을 올리셨기 때문에 스위치 문을 이용한 다른 방법을 보여드리겠습니다.

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

    ... rest of cases

    default:
        // do something
        break;
}

그러나 위의 내용이 효과가 있으므로 배열이 더 나은 대안입니다.사용할 수도 있습니다.if()그러나 스위치 문이 여러 개의 경우보다 훨씬 더 깨끗할 것입니다.

언급URL : https://stackoverflow.com/questions/24998624/day-name-from-date-in-js

반응형