javascript - 平日。如何在以下代码中修复此错误?
问题描述
“2017 年 11 月 3 日 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
样本输出:周二
错误:我未定义
解决方案
来自 Date.parse() 的 Mozilla 文档:
Date.parse() 方法解析日期的字符串表示形式,并返回自 1970 年 1 月 1 日 00:00:00 UTC 以来的毫秒数,如果字符串无法识别或在某些情况下包含非法日期值,则返回 NaN (例如 2015-02-31)。
所以上面的代码永远不能工作,因为你在一个字符串变量上调用 .getDate() 。您只能在 Date 对象上调用它。在第一个示例中,您尝试调用a.getDate()
where a
is "19 October 1909 10:27"(字符串)。
在第二个示例中,您调用 .getDate() ,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
推荐阅读
- python-3.x - 是否需要提供 access_key 和 secret_key 才能在 lambda 函数中从 s3 访问对象?
- firebase - 在 Firestore 中,用户的用户 id 是否应该是私有的(安全的,不应该显示给其他人)?
- angular - 无法从服务中的路由中获取参数 ['id']
- webrtc - apirtc - 离开或停止对话
- api - Dialogflow webhook 请求显示权限被拒绝
- docker - 知道请求是否来自 docker compose 创建的同一网络中的容器
- sql - 如何创建pl sql函数来检查数据库中是否存在数据
- c - 我正在编写一个程序来执行先到先服务算法,它显示分段错误
- sql - (SQL Server 2017) 我收到错误消息 8152,我不知道为什么
- asp.net-mvc - 如何在 ASP.NET MVC 中的 WebServer 中仅上传修改后的 .cs 文件?