平日如何在以下代码中修复此错误?

时间:2019-07-09 14:37:05

标签: javascript

将两行格式为“ 03 November 2017 04:17”的行传递给“ testDateTime”函数。 您需要将字符串转换为日期,然后进行比较。要获取更多信息,请获取星期几。.星期日-星期六:0-6

样本输入:

1909年10月19日10:27

1909年3月28日00:59

样本输出: 星期二

function testDateTime(a, b){
  var arr = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
  var aa = Date.parse(a);
  var bb = Date.parse(b);
  var i = ( aa > bb ? a.getDay() : b.getDay());
 return arr[i];
}

||

function testDateTime(a, b) {    
  var arr = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
  var aa = Date.parse(a);
  var bb = Date.parse(b);
  var i = ( aa > bb ? aa.getDay(a) : bb.getDay(b));
 return arr[i];
}

样本输入: 1909年10月19日10:27 1909年3月28日00:59

样本输出: 星期二

错误:我没有定义

1 个答案:

答案 0 :(得分:0)

从Mozilla文档中获取Date.parse():

  

Date.parse()方法解析日期的字符串表示形式,然后   返回自UTC 1970年1月1日00:00:00以来的毫秒数   或NaN(如果字符串无法识别,或者在某些情况下包含   非法的日期值(例如2015-02-31)。

因此,上面的代码永远无法工作,因为您正在对字符串变量调用.getDate()。您只能在Date对象上调用它。在第一个示例中,您尝试调用a.getDate(),其中a是“ 1909年10月19日10:27”(字符串)。

在第二个示例中,您在aa上调用.getDate(),这是Date.parse()的结果。如上所述,.getDate()函数返回一个字符串,因此效果是相同的-在字符串变量上调用不存在的方法。

尝试以下方法:

function testDateTime(a, b){
  var arr = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
  var aa = new Date(Date.parse(a));
  var bb = new Date(Date.parse(b));
  var i = ( aa > bb ? aa.getDay() : bb.getDay());
 return arr[i];
}

console.log(testDateTime('19 October 1909 10:27', '28 March 1909 00:59'));

输出: Tuesday