javascript - 经典ASP中的日期验证

标签 javascript asp-classic vbscript

经典 asp 中的日期验证

我是经典 asp 的新手,在验证日期时遇到问题

dim Day,Month,Year,FullDate
Day = "01"
Month = "20"
Year = "2012"
FullDate = Month + "/" + Day + "/" + Year

document.write FullDate
document.write IsDate(FullDate)
document.write IsDate(CDate(FullDate))
document.write IsDate(20/01/2012)

输出:

20/01/2012
true true false

最佳答案

如果你问为什么 document.write IsDate(20/01/2012) 不写 true 原因是因为你要求计算机做除法,然后将其计算为日期。

20/01 = 20 => 20/2012 ~= 0.01

IsDate(0.01) => false

如果你真的想测试你得到的东西,试试这个(小调整)

Your: document.write IsDate(20/01/2012)
Mine: document.write IsDate("20/01/2012")

此外,只是为了澄清 http://en.wikipedia.org/wiki/Date_format_by_country

一些国家使用

dd/mm/yyyy

还有一些地方使用

mm/dd/yyyy

这就是为什么国际标准组织建议您做的事情从最不具体到最具体:

yyyy-mm-dd hh:mm:ss.ffffffffffff

注意是年 -> 月(哪个月比哪年更具体)-> 天(事件发生在哪一天是有帮助的)-> 小时(不要迟到!)-> 分钟(由铃?)-> 秒(现在你知道它什么时候发生了)-> 几分之一秒(奥林匹克游泳!)

年份相当不明确。一年里会发生很多事情。所以那些应该总是首先解析。 ISO 方式是传递日期信息的首选方式,当年份不在前时,系统会尝试智能猜测。因为世界上有些地方做 dmy 而有些地方做 mdy 并且因为你的起始两个数字中只有一个超过 12,它假设你的意思是 dmy 而不是 mdy。这里没有 WTF。


作为记录,这里列出了一些国家/地区,这些国家/地区主要按照 mdy 格式的传统将月份放在首位(不包括不是传统而是科学的 ISO 格式)

  • 伯利兹
  • 密克罗尼西亚联邦
  • 帕劳
  • 美利坚合众国

最后,如果您想编写一个函数来尝试为您重新解析日期:

考虑到人们倾向于使用空格、句点、连字符或斜杠来分隔日期,他们可能将其写为“20120817”,或者他们也可能包括时间。中间可能有一个T,最后可能有一个Z。

示例输入:(以及它们代表的日期)

2011-08-17 (august 17th)
2011-08-01 (august 1st or jan 8th?)
08-01-2011 (august 1st or jan 8th?)
08-17-2011 (august 17th)
17-08-2011 (august 17th)
2011-17-08 (I've never seen this ever)

2011/08/17 (august 17th)
2011.08.01 (august 1st or jan 8th?)
08\01\2011 (august 1st or jan 8th?)
08-17-2011 (august 17th)
17 08 2011 (august 17th)

如您所见,这里必须进行一些解析,并且假设它们有一个 10 位数字的字符串并且这 10 位数字是一个日期。以下是一些其他日期格式:

08-01-12   (was that January 8th, 2012 or January 12th, 2008 or August 1st, 2012 ...)
15-03-13   (ok, so we have found the month is March, but the other two?)
1-1-1
8-8-8      (these two are easy, but which rule do they match?)

然后你必须解析

20120817
20121708
20120801
01082012
08172012

如您所见,解析函数似乎 很简单,但需要考虑的因素很多,而这只是日期。想我们接下来谈谈时间吗?

201208171311   -> 2012-08-17 13:11    (1:11 PM)
20120817T1311  -> 2012-08-17 13:11    (1:11 PM)
20120817T0111P -> 2012-08-17 01:11 PM

关于javascript - 经典ASP中的日期验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12010567/

相关文章:

javascript - 我们可以将 jquery one() 用于具有多个元素的属性类吗

database - 如何在 vbscript 中将记录集放入二维数组中?

jquery - 经典的Asp持久上传和Jquery Ajax

asp-classic - 用经典的asp添加自定义 header

javascript - 通过 Enterprise Architect 中的脚本访问嵌套元素

javascript - 使用 Clients.Group 时,SignalR Javascript 客户端回调不会触发

javascript - HTML5 音频在某些浏览器中无法工作

vbscript - 通过 VBscript/ADO 访问 LDAP 服务器

javascript - 如何将值从javascript函数传递到django View

asp-classic - 获取变量名 Classic ASP