Date.getDay () จาวาสคริปต์กลับมาผิดวัน


146

สวัสดีฉันใหม่ในจาวาสคริปต์ฉันมีรหัสจาวาสคริปต์

alert(DATE.value);
var d = new Date(DATE.value);
var year = d.getFullYear();
var month = d.getMonth();
var day = d.getDay();
alert(month);
alert(day);
if(2012 < year < 1971 | 1 > month+1 > 12 | 0 >day > 31){
    alert(errorDate);
    DATE.focus();
    return false;
}

ยกตัวอย่าง: DATE.value = "11/11/1991"

เมื่อฉันเรียกalert(day);มันแสดงให้ฉันเห็น3;
เมื่อฉันโทรalert(d);มันจะส่งคืนข้อมูลที่ถูกต้องให้ฉัน


คำตอบ:


330

ใช้แทน.getDate.getDay

ค่าที่ส่งคืนโดย getDay เป็นจำนวนเต็มที่สอดคล้องกับวันในสัปดาห์: 0 สำหรับวันอาทิตย์, 1 สำหรับวันจันทร์, 2 สำหรับวันอังคารและอื่น ๆ


154
โง่จริงๆที่ผู้ออกแบบฟังก์ชั่นนี้ไม่ได้เรียกมันว่า getDayOf Week ไม่นั่นคงชัดเจนเกินไป
AndroidDev

41
@AndroidDev ฉันเห็นด้วย! ยิ่งไปกว่านั้นกับ.getDateหนึ่งคาดว่าจะได้รับคืนเต็มวันไม่ใช่แค่วัน

47
นี่คือเพิ่มเติม: ฟังก์ชัน getMonth ส่งคืนเลขจำนวนเต็มตั้งแต่ 0 ถึง 11 โดยมี 0 สำหรับมกราคมและ 11 สำหรับธันวาคม พวกเขาจะต้องสูบบุหรี่ของหนัก ๆ นั่น
taralex

13
นี่คืออีกมาก: getYear () จริง ๆ แล้วปีลบ 1900!
Guilhem Fry

การออกแบบที่ไม่เข้ากันโดยสิ้นเชิง ~Date.getYear() okay, Date.getMonth() okay, Date.getDate() what?
Eddie B



5

ฉันมีปัญหาที่คล้ายกัน ผลตอบแทนดัชนีตั้งแต่date.getMonth() เดือนมกราคมเป็น0 to 11 0หากคุณสร้างdate()-object ใหม่และคุณต้องการรับข้อมูลเกี่ยวกับวันที่ costum ไม่ใช่วันที่ปัจจุบันคุณต้องลดเดือนเท่านั้น1เท่านั้น

เช่นนี้ :

function getDayName () {
var year = 2016;
var month = 4;
var day = 11;

var date = new Date(year, month-1, day);
var weekday = new Array("sunday", "monday", "tuesday", "wednesday",
                    "thursday", "friday", "saturday");

return weekday[date.getDay()];
}

Awesome Sven ... นั่นเป็นทางออกสำหรับฉันลบหนึ่งที่มอด ... ขอบคุณ
juanram0n

1
function formatDate(date, callback)
{
var weekday = new Array("Sunday", "Monday", "Tuesday", "Wednesday",     "Thursday", "Friday", "Saturday");
var day = weekday[date.getDay()];
console.log('day',day);
var d = date.getDate();
var hours = date.getHours();
ampmSwitch = (hours > 12) ? "PM" : "AM";
if (hours > 12) {
    hours -= 12;

}
else if (hours === 0) {
    hours = 12;
}
var m = date.getMinutes();
var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
var month = months[date.getMonth()];
var year = date.getFullYear();
newdate = day + ', ' + month + ' ' + d + ',' + year + ' at ' + hours + ":" + m + " " + ampmSwitch
callback(newdate)
}

และโทรด้วยรหัสนี้

date="Fri Aug 26 2016 18:06:01 GMT+0530 (India Standard Time)"
formatDate(date,function(result){
   console.log('Date=',result);
 });

1

จากนี้ไปคุณอาจต้องการใช้ฟังก์ชันด้านล่างสำหรับวัตถุวันที่ด้านล่าง:

    function dayOf(date)
    {
        return date.getDate();
    }

    function monthOf(date)
    {
        return date.getMonth() + 1;
    }

    function yearOf(date)
    {
        return date.getYear() + 1900;
    }

    function weekDayOf(date)
    {
        return date.getDay() + 1;
    }
    
    var date = new Date("5/15/2020");
    console.log("Day: " + dayOf(date));
    console.log("Month: " + monthOf(date));
    console.log("Year: " + yearOf(date));

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.