问题描述
如何测试格式为 yyyy/mm/dd 的字符日期?
我尝试使用:
*YMD TEST(D) DATE 80
我想测试这个 2021/15/30 日期,因为我想确保该日期经过验证,但即使我测试了正确的日期(例如 2021/06/01),它似乎也不起作用。我该怎么办?
我也试试这个:
Eval DT = %CHAR(%DATE(DATE:*YMD/))
*YMD TEST(DE) DT
IF NOT %ERROR()
Move DT DATE
Write Currec
Endif
我输入 2021/06/01 作为输入,但收到此错误:
我该怎么办?
解决方法
RPG 不支持 YYYY/MM/DD 格式。您可以使用 %XLATE 将 / 更改为 -,然后使用 *ISO 格式。
EVAL DATE = %XLATE('/' : '-' : DATE)
*ISO TEST(DE) DATE
,
我避免使用固定格式代码,所以我还没有确认这是否正确,但我相信您应该使用 *YYMD
或 *ISO
而不是 *YMD
进行此特定测试给定您要检查的格式。相关链接:
https://www.ibm.com/docs/en/i/7.3?topic=80-datfmt-date-format-keyword-physical-logical-files https://www.ibm.com/docs/en/i/7.1?topic=codes-test-test-datetimetimestamp
,我知道您想验证日期
你可以简单地在 JavaScript 中做到这一点
var yourdatehere = date();
var year = year(yourdatehere) ;
//this will return the current year of the input date
//then you will check month
var month = month(yourdatehere);
最后
var day = day(yourdatehere);
//now you will have to make simple if conditions
if (year >year(date())) {
alert (" your current year is not valid") ;
// in case you want to not allow the user to insert a value larger than
//current year date
}
//and same goes for month
if (month > 12) {
alert("not valid month");
}
//finally
if ( day > 31 ) then {
alert(not valid day ) ;
}
您也可以通过下面的代码使用上面的代码制作简单的掩码日期
var formatedDate = year +"/" + month + "/" + day;
或
var formatedDate = year +"-" + month + "-" + day;
如果您有任何问题,请告诉我。