Get-day文本函数返回了未定义的值

Get day text function returned undefined

本文关键字:未定义 返回 文本 函数 Get-day      更新时间:2023-09-26

不确定下面函数的逻辑缺陷在哪里,我正在尝试获取字符串中的日期值。

function getDayText(date){
        var weekday = new Array(7);
        weekday[0]=  "Sunday";
        weekday[1] = "Monday";
        weekday[2] = "Tuesday";
        weekday[3] = "Wednesday";
        weekday[4] = "Thursday";
        weekday[5] = "Friday";
        weekday[6] = "Saturday";
        return weekday[date];
}
console.log(getDayText(2016-1-1)) // undefined

问题是参数2016-1-1不是有效日期。

//no need to create array for each call
var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
var day = function(str) {
  var tmp = new Date(str); //create date
  return days[tmp.getDay()];
};
alert(day('2016-1-1')); //<-- note, its string

以下内容:

console.log(getDayText(2016-1-1));

与相同

console.log(getDayText(2014));

但您的weekday阵列只有7个元素,而不是2014。因此,当您尝试访问此数组的第2014个元素时,得到undefined是正常的。请确保只指定有效的索引(在您的情况下,索引范围为0到6)。例如:

console.log(getDayText(3));

您需要度过一周中的某一天才能获得预期结果。

console.log(getDayText(new Date("2016-1-1").getDay()));

您可能想要使用Date。将日期作为(有效)字符串传递给它的构造函数,并使用getDay方法获取星期几。

function getDayText(date){
	var weekday = new Array(7);
	weekday[0]=  "Sunday";
	weekday[1] = "Monday";
	weekday[2] = "Tuesday";
	weekday[3] = "Wednesday";
	weekday[4] = "Thursday";
	weekday[5] = "Friday";
	weekday[6] = "Saturday";
	return weekday[new Date(date).getDay()];
}
document.write('<pre>' + getDayText("2016-01-01") + '</pre>');

我更喜欢将Date对象传递给方法,而不是字符串,所以要整理它:

function getDayText(date) {
  var days = [
    "Sunday",
    "Monday",
    "Tuesday",
    "Wednesday",
    "Thursday",
    "Friday",
    "Saturday"
  ];
  return days[date.getDay()];
}
document.write('<pre>' + getDayText(new Date("2016-01-01")) + '</pre>');