使用new Date或Date.parse在JavaScript中,我不能只传递任意日期格式.根据格式,我得到的日期与我想要的不同,甚至Invalid Date不是日期对象.某些日期格式在一个浏览器中工作,但在其他浏 那么我应该使用哪种日期时间格式?
其他问题:
所有浏览器都支持相同的格式吗?Mozilla Firefox,Google Chrome,Microsoft Internet Explorer,Microsoft Edge和Apple Safari如何处理日期时间字符串?那么Node.js呢?
是否需要考虑本地日期格式?例如,如果我住在瑞士并且日期格式是30.07.2018,我可以使用new Date('30.07.2018')吗?
是否需要考虑当地时区?
如何从日期对象中获取日期时间字符串?
如何检测无效的日期时间字符串?
Moment.js等日期库如何处理日期字符串?
如果您没有注意到,我回答了我自己的问题(为什么?).
我需要检查给定的字符串是否是日期对象.
最初我用过
Date.parse(val)
Run Code Online (Sandbox Code Playgroud)
如果你检查Date.parse("07/28/2014 11:23:29 AM"),它会工作.
但是,如果你检查Date.parse("hi there 1"),它也会工作,但不应该.
所以我改变了我的逻辑
val instanceof Date
Run Code Online (Sandbox Code Playgroud)
但对于我的上述日期字符串,"07/28/2014 11:23:29 AM" instanceof Date它返回false.
那么,有什么办法可以让我在日期中适当地验证我的字符串?
我正在尝试验证日期输入,所以如果它是正确的,我处理一种方式,如果无效,我处理另一种...
var date, datestring, e;
datestring = "2012-03-222";
try {
date = new Date(datestring);
/* Ends up logging `Invalid Date`
*/
console.log(date);
} catch (_error) {
e = _error;
/* Should come here and log `Error: Invalid Date` or the likes
*/
console.log("Erorr: " + e);
}
Run Code Online (Sandbox Code Playgroud)
我可以检查返回的字符串,看看它是否Invalid Date存在,但是我很惊讶这try/catch对于这种情况不起作用,并担心可能有其他错误消息我不匹配.
我该如何处理这个问题?
如果你采取以下措施:
var s = "2/8888/2016";
var d = new Date(s);
alert(d);
Run Code Online (Sandbox Code Playgroud)
在Chrome中,您将获得:
失效日期
但在IE和Firefox中,你会得到:
周五至周五2040 00:00:00 GMT-0500(中部夏令时)
它似乎只是在2月01日加入8888天.相反,我希望该日期被视为无效.有没有办法让FireFox和IE认为这个日期字符串无效?
我正在按照此示例验证日期字符串。
虽然下面的示例评估为true。
var date = new Date('12/21/2019');
console.log(date instanceof Date && !isNaN(date.valueOf()));
Run Code Online (Sandbox Code Playgroud)
这个下面的例子即使是一个不好的日期也算为true。
var date = new Date('02/31/2019');
console.log(date instanceof Date && !isNaN(date.valueOf()));
Run Code Online (Sandbox Code Playgroud)
有更好的方法吗?
我的眼睛一定是在欺骗我,但是当我打电话时setMonth(1),那个日期对象的日期不应该是二月吗?(今天是2016年3月30日)
x = new Date();
y = new Date();
x.setMonth(1);
document.write(x.toString() + '<br>' + y.toString());
Run Code Online (Sandbox Code Playgroud)
结果是:
这是我在chrome控制台中获得的.我通过"2016-09-05"(YYYY-MM-DD)作为日期,它显示我作为日期在2016年9月4日.
另一个构造函数显示正确的日期
传递逗号分隔需要一些标记+解析+使月零索引,我想避免
我使用Google表格(电子表格)来合并Gambio商店的不同来源的文章数据。要导入数据,我需要在.csv文件中使用管道符号作为定界符/分隔符和“作为文本定界符”。在用于导出到.csv的Google表格菜单中,没有选项。
有没有一种方法可以使用Google表格中的管道分隔符导出到.csv?
嗨,我正在为这个简单的代码寻找一个很好的解释
为什么isNaN(new Date(some date))给false?(返回对象的类型)
这是一个对象,据我所知isNaN函数显式转换为数字,所以如果我将不同的对象传递给isNaN,则返回true.
然而,对于 Typescript is we do !isNaN(someDate),typescript抱怨我们使用的是一种接受数字而不是日期的方法。
关于如何处理这个问题的想法?