如果在 RPGLE 中有格式 yyyy/mm/dd,如何测试D日期?

问题描述

如何测试格式为 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 作为输入,但收到此错误

error

我该怎么办?

解决方法

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;

如果您有任何问题,请告诉我。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...