Board logo

标题: [问题求助] VBS如何判断输入的日期是否合法/正确 [打印本页]

作者: c755731262    时间: 2015-6-8 08:52     标题: VBS如何判断输入的日期是否合法/正确

本帖最后由 pcl_test 于 2017-4-13 09:38 编辑
  1. dim fanhuizhi
  2. fanhuizhi=checkdate(2,31,2015)
  3. if fanhuizhi <> "" then
  4.    msgbox fanhuizhi,48,"报错信息"
  5. else
  6.    msgbox "you xiao"
  7. end if
  8. function checkdate(smonth,sday,syear)
  9.   on error resume next
  10.   dim date1
  11.   date1=cdate(sday&"/"&smonth&"/"&syear)
  12.   if err.number <> 0 then
  13.      err.clear
  14.      date1=dateadd("m",1,smonth&"/"&syear)
  15.      date1=dateadd("d",-1,date1)
  16.      checkdate="there are only "&day(date1)&" days in "&smonth
  17.   else
  18.      checkdate=""
  19.      end if
  20. end function
复制代码
当调用函数的参数为无效日期2015年2月31号时,从第13行到第17行看不懂,日期无效,得到提示信息15年2月只有28天,不知道这个是怎么得到的
作者: czjt1234    时间: 2015-6-9 08:25

13行,用&连接字符串为日期格式,可用Msgbox date1查看

CDate 根据系统的区域设置识别日期格式。如果数据的格式不能被日期设置识别,则不能判断年、月、日的正确顺序。另外,如果长日期格式包含表示星期几的字符串,则不能被识别。

下面的示例使用 CDate 函数将字符串转换成日期类型。一般不推荐使用硬件译码日期和时间作为字符串(下面的例子已体现)。而使用时间和日期文字 (如 #10/19/1962#, #4:45:23 PM#)。

MyDate = "October 19, 1962"        ' 定义日期。
MyShortDate = CDate(MyDate)        ' 转换为日期数据类型。
MyTime = "4:35:47 PM"              ' 定义时间。
MyShortTime = CDate(MyTime)        ' 转换为日期数据类型。

如果不是正确的日期或日期格式,则产生错误
err对象是vbs内置的错误对象
产生错误后,err.number属性值就不为0了,为错误代码
作者: c755731262    时间: 2015-6-9 17:53

回复 2# czjt1234


    关键是,对于从13行到17行的代码怎么处理 输入的错误日期 这个过程,一直不明白怎么装换的,错误日期如 2015年2月31号




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2