我在网页上有一个恼人的错误:
date.GetMonth()不是函数
所以,我想我做错了什么.变量date不是类型的对象Date.如何在Javascript中检查数据类型?我试图添加一个if (date),但它不起作用.
function getFormatedDate(date) {
if (date) {
var month = date.GetMonth();
}
}
Run Code Online (Sandbox Code Playgroud)
所以,如果我想编写防御性代码并防止日期(不是一个)被格式化,我该怎么做?
谢谢!
更新:我不想检查日期的格式,但我想确保传递给方法的参数getFormatedDate()是类型Date.
检查值是否为有效日期,允许使用任何已知日期格式的简单方法是什么.
比如我有值10-11-2009,10/11/2009,2009-11-10T07:00:00+0000它都应该被视为日期值,和值200,10,350,不应被视为一个日期值.如果可能的话,最简单的检查方法是什么?因为时间戳也是允许的.
我知道__proto__已被弃用(或不是标准的一部分)而且所有这些但我仍然很好奇当它看到无效日期时我看到的__proto__值...
var myDate = new Date(1331869050000);
Run Code Online (Sandbox Code Playgroud) 我想使用格式验证输入的日期格式mm/dd/yyyy.
我在一个站点中找到了以下代码然后使用它但它不起作用:
function isDate(ExpiryDate) {
var objDate, // date object initialized from the ExpiryDate string
mSeconds, // ExpiryDate in milliseconds
day, // day
month, // month
year; // year
// date length should be 10 characters (no more no less)
if (ExpiryDate.length !== 10) {
return false;
}
// third and sixth character should be '/'
if (ExpiryDate.substring(2, 3) !== '/' || ExpiryDate.substring(5, 6) !== '/') {
return false;
}
// extract month, day and year …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用HTML5在不同平台上运行本机Web应用程序来探索可行性.目前,一个<input type="date">领域只是在Android和iOS上打开标准软键盘.我想在未来移动操作系统的软键盘将包括日期选择器等 - 就像<select>今天调用本机选择一样.
由于这不是在Android或iOS上实现,而是在本机UI中实现,因此Web应用程序是否可以调用本机日期选择器,即单击时?
这将使我们可以停止使用jQuery mobile和YUI等JavaScript库.
如果我的问题不清楚,请告诉我.先感谢您 :-)
我正在尝试测试,以确保日期是有效的,如果有人进入,2/30/2011那么它应该是错误的.
我怎么能在任何日期这样做?
可能重复:
在JavaScript中检测"无效日期"日期实例
IsDate()javascript中有功能吗?
我想测试输入的日期和时间是否有效.
这可以用时间来完成,因为日期和时间测试使用javascript似乎是一场噩梦.(花了几个小时).
测试数据看起来像这样.
无效
invalid = ""
invalid = " "
invalid = "x"
invalid = "1/1"
invalid = "30/2/2015"
invalid = "2/30/2015"
Run Code Online (Sandbox Code Playgroud)
已验证
isvalid = "1/12/2015"
isvalid = "1/12/2015 1:00 PM";
Run Code Online (Sandbox Code Playgroud)
尝试了各种javascript方法,试用数小时失败.
我想当下会有一些东西.所以试过以下,所有这些都不起作用,因为我不认为时刻是这样的.
var valid = moment(input).isDate()
var valid = moment().isDate(input)
Run Code Online (Sandbox Code Playgroud)
我的时间格式是"dd/mm/yyyy"
在我正在进行的项目中,我需要验证输入的日期 <input type="date">
使用Safari 4/5(在Mac OSX上),Javascript无法解析格式的日期YYYY-MM-DD,NaN而是返回而不是预期的纪元时间戳.
我正在使用以下技术在提交表单之前验证字段:
//value = '2010-06-21'
var stamp = Date.parse(value);
if (isNaN(stamp)) {
//notify user
} else {
value = new Date(stamp).format_mysql();
}
Run Code Online (Sandbox Code Playgroud)
format_mysql()原型函数在哪里将日期(正确)格式化为MySQL日期时间格式(YYYY-MM-DD).
将-'s 替换为' /(YYYY/MM/DD)会产生"正确"的时间戳.
我应该注意,该字段应该接受任何日期格式,而不仅仅是YYYY-MM-DD,虽然我想,但我不能使用像Date.js这样的库
我该如何解决这个问题,还是有更好的方法来解析/验证日期?
可能重复:
在JavaScript中检测"无效日期"日期实例
我使用以下内容来检测有效日期:
var text = $('#Date').val();
var date = Date.parse(text);
if (isNaN(date)) {
// Invalid date
}
Run Code Online (Sandbox Code Playgroud)
但发现Date.parse认为以下是有效日期(mm/dd/yyyy)
当天数超过该月的总天数时,还有其他任何方法可以检测无效日期吗?
更新:一个更大的问题是jQuery验证插件也没有将其检测为无效日期!
解:
根据@ Guffa的评论,我创建了以下函数来验证日期:
function validDate(text) {
var date = Date.parse(text);
if (isNaN(date)) {
return false;
}
var comp = text.split('/');
if (comp.length !== 3) {
return false;
}
var m = parseInt(comp[0], 10);
var d = parseInt(comp[1], 10);
var y = parseInt(comp[2], 10);
var date = new Date(y, m - 1, d);
return (date.getFullYear() == y && …Run Code Online (Sandbox Code Playgroud) javascript ×10
date ×4
validation ×4
jquery ×2
android ×1
date-format ×1
datetime ×1
html5 ×1
ios ×1
iphone ×1
momentjs ×1
safari ×1