javascript 中,如何判断一个字符串能否成功转换成日期?

nesx_lxj 2004-11-08 09:59:07
请教各大侠:
javascript 中,如何判断一个字符串能否成功转换成日期?
谢谢!
...全文
323 4 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
smalle 2004-11-08
  • 打赏
  • 举报
回复
var datestring = "Jan 5, 1996 08:47:00";
var dd=new Date(datestring)
if(isNaN(dd))alert("不是日期");
---------------------------------------------
你输入的日期格式可能有误.
Jscript可识别的日期字符串格式:

1.短日期可以使用“/”或“-”作为日期分隔符,但是必须用月/日/年的格式来表示,例如"7/20/96"。
2.以 "July 10 1995" 形式表示的长日期中的年、月、日可以按任何顺序排列,年份值可以用 2 位数字表示也可以用 4 位数字表示。如果使用 2 位数字来表示年份,那么该年份必须大于或等于 70。
括号中的任何文本都被视为注释。这些括号可以嵌套使用。
3.逗号和空格被视为分隔符。允许使用多个分隔符。
4.月和日的名称必须具有两个或两个以上的字符。如果两个字符所组成的名称不是独一无二的,那么该名称就被解析成最后一个符合条件的月或日。例如,"Ju" 被解释为七月而不是六月。
5.在所提供的日期中,如果所指定的星期几的值与按照该日期中剩余部分所确定的星期几的值不符合,那么该指定值就会被忽略。例如,尽管 1996 年 11 月 9 日实际上是星期五,"Tuesday November 9 1996" 也还是可以被接受并进行解析的。但是结果 Date 对象中包含的是 "Friday November 9 1996"。
6.JScript 处理所有的标准时区,以及全球标准时间 (UTC) 和格林威治标准时间 (GMT)。
小时、分钟、和秒钟之间用冒号分隔,尽管不是这三项都需要指明。"10:"、"10:11"、和 "10:11:12" 都是有效的。
7.如果使用 24 小时计时的时钟,那么为中午 12 点之后的时间指定 "PM" 是错误的。例如 "23:15 PM" 就是错误的。
8.包含无效日期的字符串是错误的。例如,一个包含有两个年份或两个月份的字符串就是错误的。
JK_10000 2004-11-08
  • 打赏
  • 举报
回复
回复人: smalle(锋) ( ) 信誉:100 2004-11-08 10:23:00 得分: 0
直接COPY从一些帮助文件来了事,其实除了来赚分这外有什么用?
--------------------------------------------------------------------

说得好!
smalle 2004-11-08
  • 打赏
  • 举报
回复
直接COPY从一些帮助文件来了事,其实除了来赚分这外有什么用?
aa="2004-11-6-96"
var dd=new Date(aa)
if(isNaN(dd))alert("不是日期");
JK_10000 2004-11-08
  • 打赏
  • 举报
回复
var d=new Date(dateVal)

dateVal:
如果是数字值,dateVal 表示指定日期与 1970 年 1 月 1 日午夜间全球标准时间 的毫秒数。如果是字符串,则 dateVal 按照 parse 方法中的规则进行解析。dateVal 参数也可以是从某些 ActiveX(R) 对象返回的 VT_DATE 值。


parse 方法 语言参考
版本 1


请参阅 应用于


--------------------------------------------------------------------------------

描述
解析一个包含日期的字符串,并返回该日期与 1970 年 1 月 1 日午夜之间所间隔的毫秒数。

语法
Date.parse(dateVal)
其中 dateVal 是一个包含以诸如 "Jan 5, 1996 08:47:00" 的格式表示的日期的字符串,或者是一个从 ActiveX(R) 对象或其他对象中获取的 VT_DATE 值。

说明
parse 方法返回一个整数值,这个整数表示 dateVal 中所包含的日期与 1970 年 1 月 1 日午夜之间相间隔的毫秒数。
parse 方法是 Date 对象的一个静态方法。正因为它是一个静态方法,它是通过下面例子中所示的方法被调用的,而不是作为一个已创建 Date 对象的一个方法被调用。

var datestring = "November 1, 1997 10:15 AM";
Date.parse(datestring)
下面这些规则决定了 parse 方法能够成功地解析那些字符串:
短日期可以使用“/”或“-”作为日期分隔符,但是必须用月/日/年的格式来表示,例如"7/20/96"。
以 "July 10 1995" 形式表示的长日期中的年、月、日可以按任何顺序排列,年份值可以用 2 位数字表示也可以用 4 位数字表示。如果使用 2 位数字来表示年份,那么该年份必须大于或等于 70。
括号中的任何文本都被视为注释。这些括号可以嵌套使用。
逗号和空格被视为分隔符。允许使用多个分隔符。
月和日的名称必须具有两个或两个以上的字符。如果两个字符所组成的名称不是独一无二的,那么该名称就被解析成最后一个符合条件的月或日。例如,"Ju" 被解释为七月而不是六月。
在所提供的日期中,如果所指定的星期几的值与按照该日期中剩余部分所确定的星期几的值不符合,那么该指定值就会被忽略。例如,尽管 1996 年 11 月 9 日实际上是星期五,"Tuesday November 9 1996" 也还是可以被接受并进行解析的。但是结果 Date 对象中包含的是 "Friday November 9 1996"。
JScript 处理所有的标准时区,以及全球标准时间 (UTC) 和格林威治标准时间 (GMT)。
小时、分钟、和秒钟之间用冒号分隔,尽管不是这三项都需要指明。"10:"、"10:11"、和 "10:11:12" 都是有效的。
如果使用 24 小时计时的时钟,那么为中午 12 点之后的时间指定 "PM" 是错误的。例如 "23:15 PM" 就是错误的。
包含无效日期的字符串是错误的。例如,一个包含有两个年份或两个月份的字符串就是错误的。
下面这个例子说明了 parse 方法的用法:
function GetTimeTest(testdate)
{
var d, s, t;
var MinMilli = 1000 * 60;
var HrMilli = MinMilli * 60;
var DyMilli = HrMilli * 24;
d = new Date();
t = Date.parse(testdate);
s = "There are "
s += Math.round(Math.abs(t / DyMilli)) + " days "
s += "between " + testdate + " and 1/1/70";
return(s);
}
发帖
JavaScript

8.7w+

社区成员

Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
帖子事件
创建了帖子
2004-11-08 09:59
社区公告
暂无公告