簡體   English   中英

JS中日期的日期名稱

[英]Day Name from Date in JS

我需要顯示我從第 3 方獲得的給定日期(如“05/23/2014”)的日期名稱。

我試過使用Date ,但我只得到日期。

獲取當天名稱的正確方法是什么?

嗯,三年后……

為什么沒有人使用標准 javascript 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”作為語言環境。

您可以使用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 收到的字符串。

或者,如果您想要日期名稱的前 3 個字母,您可以使用Date對象的內置toString方法:

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

這將采用d.toString()輸出中的第一個單詞,這將是 3 個字母的日期名稱。

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

簡單,閱讀JavaScript手冊中的Date對象

要使用日期執行其他操作,例如從中獲取可讀字符串,我使用:

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

如果您只想要時間或日期,請使用:

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

您可以通過執行以下操作來解析日期:

var d = new Date(dateToParse);

或者

var d = Date.parse(dateToParse);

要從任何給定日期獲取日期,只需將日期傳遞給一個新的 Date 對象:

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 文檔

最簡單的方法:

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

如果其他人提出了更好的解決方案,我不喜歡過於復雜的解決方案,請告訴我們:)

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>

一行解決方案:

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

嘗試使用此代碼:

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

這將以字符串格式為您提供日期名稱。

最短的一個班輪

如果您希望 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'));

此方法不需要您設置隨機日期或事先知道 stringLocale。 此方法獨立於預定義值。 可以從客戶端檢索語言環境。

在字符串語言環境中自動填充工作日數組。

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

你可以使用一個對象

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

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

解決方案一

var today = new Date();

  var day = today.getDay();

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

  var dayname = days[day];

  document.write(dayname);

解決方案二

      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 dayName =['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; var day = dayName[new Date().getDay()]; console.log(day)

只需使用它:

 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

Intl.DateTimeFormat一種選擇是使用內置函數Intl.DateTimeFormat ,例如:

 function getDayName(dateString) { const [date, options] = [new Date(dateString), {weekday: 'long'}]; return new Intl.DateTimeFormat('en-Us', options).format(date); }
 <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 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 解決這個問題。 // 星期幾是:"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"

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 語句的替代方法。

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

    ... rest of cases

    default:
        // do something
        break;
}

上述工作,然而,數組是更好的選擇。 您也可以使用if()語句,但是 switch 語句會比幾個 if 語句簡潔得多。

var day ;
    switch(new Date().getDay()){
        case 0:
        day="Sunday";
        break;
        case 1:
        day="Monday";
        break;
        case 2:
        day="Tuesday";
        break;
        case 3:
        day="wednesday";
        break;
        case 4:
        day ="Thurs day"
        break;
        case 5:
        day ="friday";
        break;
        case 6:
        day ="Satureday";
        break;

        }
        document.write(day);

我以這種方式解決了這個問題。 希望可以幫到你

let dateString = '5/23/2014'  

// converting Date String to Javascript Date Format
let day = new Date(dateString).getDay();
let month = new Date(dateString).getMonth()
let year =  new Date(dateString).getFullYear()
let dayName;

if (day ==0){
    dayName= 'Sunday'
}else if (day == 1){
    dayName= 'Monday'
}else if (day == 2){
    dayName= 'Tuesday'
}else if (day == 3){
    dayName= 'Wednesday'
}else if (day == 4){
    dayName= 'Thursday'
}else if (day ==5){
    dayName= 'Friday'
}else {
    dayName= 'Saturday'
}

console.log(`Day : ${dayName} Month: ${month+1} Year : ${year}`)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM