验证字符串是否采用有效的时间格式
Verifying if string is in a valid time format
我知道如何验证日期是否有效
mydate = "1/2/2001";
writeoutput(isDate(mydate));
如何验证时间是否有效?
mytime = "12:42 pm";
writeoutput(isTime(mytime));
无效,因为 isTime()
不存在。
要查明某个时间是否有效,isDate()
函数也可以。
mytime = "12:42 pm";
writeoutput(isDate(mytime));
更新
根据 BKBK 的反馈,我寻找了一种不接受太多变化的方法。我找到了这个
locale = getLocale();
writeOutput("Locale is: " & locale & "<br>");
// accepted
writeoutput(LSisDate("12:42 pm", locale));
writeoutput(LSisDate("12:42", locale));
writeoutput(LSisDate("22:00", locale));
writeoutput("<hr />");
// rejected
writeoutput(LSisDate("1a", locale));
writeoutput(LSisDate("2p", locale));
writeoutput(LSisDate("2:70", locale));
writeoutput(LSisDate("42:00", locale));
writeoutput("<hr />");
// rejected
writeoutput(LSisDate("12 42 pm", locale));
writeoutput(LSisDate("12 42", locale));
writeoutput(LSisDate("22 00", locale));
如果你想利用 Java,你可以使用它的 DateTimeFormatter class 并根据预期的模式滚动你自己的函数来验证(参见格式化和解析模式 in the API docs).
下面是一个简单的示例函数来执行此操作。如果模式匹配,则解析方法 returns DateTimeFormatter 对象成功。所以一个DateTimeFormatter object
= true
,一个
DateTimeParseException
= false
。这是通过 try/catch.
识别的
public boolean function isValidTimeFormat(required string value, required string pattern) {
try {
var DateTimeFormatter = createObject("java", "java.time.format.DateTimeFormatter");
var format = DateTimeFormatter.ofPattern(arguments.pattern);
var parse = format.parse(arguments.value);
return true;
}
catch(java.time.format.DateTimeParseException e) {
return false
}
}
// Note that PM is capitalized as that is required for the pattern to match
writeDump(isValidTimeFormat("12:42 PM", "HH:mm a"));
我知道如何验证日期是否有效
mydate = "1/2/2001";
writeoutput(isDate(mydate));
如何验证时间是否有效?
mytime = "12:42 pm";
writeoutput(isTime(mytime));
无效,因为 isTime()
不存在。
要查明某个时间是否有效,isDate()
函数也可以。
mytime = "12:42 pm";
writeoutput(isDate(mytime));
更新
根据 BKBK 的反馈,我寻找了一种不接受太多变化的方法。我找到了这个
locale = getLocale();
writeOutput("Locale is: " & locale & "<br>");
// accepted
writeoutput(LSisDate("12:42 pm", locale));
writeoutput(LSisDate("12:42", locale));
writeoutput(LSisDate("22:00", locale));
writeoutput("<hr />");
// rejected
writeoutput(LSisDate("1a", locale));
writeoutput(LSisDate("2p", locale));
writeoutput(LSisDate("2:70", locale));
writeoutput(LSisDate("42:00", locale));
writeoutput("<hr />");
// rejected
writeoutput(LSisDate("12 42 pm", locale));
writeoutput(LSisDate("12 42", locale));
writeoutput(LSisDate("22 00", locale));
如果你想利用 Java,你可以使用它的 DateTimeFormatter class 并根据预期的模式滚动你自己的函数来验证(参见格式化和解析模式 in the API docs).
下面是一个简单的示例函数来执行此操作。如果模式匹配,则解析方法 returns DateTimeFormatter 对象成功。所以一个DateTimeFormatter object
= true
,一个
DateTimeParseException
= false
。这是通过 try/catch.
public boolean function isValidTimeFormat(required string value, required string pattern) {
try {
var DateTimeFormatter = createObject("java", "java.time.format.DateTimeFormatter");
var format = DateTimeFormatter.ofPattern(arguments.pattern);
var parse = format.parse(arguments.value);
return true;
}
catch(java.time.format.DateTimeParseException e) {
return false
}
}
// Note that PM is capitalized as that is required for the pattern to match
writeDump(isValidTimeFormat("12:42 PM", "HH:mm a"));