我需要允许日期采用以下格式:dd / mmm / yyyy来自此代码。 当我从datepicker中选择数据时,出现的值是" dd MMM yyyy"格式。
但是,如果我输入我想要的日期,例如,如果我输入" 02032014",它只是按原样读取并且不会将其更改为" 02 MAR 。2014"
使用Javascript:
function CompareDates(id)
{
var monName = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sept", "Oct", "Nov", "Dec");
var d = new Date(id);
var curr_date = d.getDate();
var curr_month = d.getMonth(monName);
var curr_year = d.getFullYear();
return d.format(curr_date + " " + curr_month + " " + curr_year);
}
和我的日历标记:
<td>
<p:calendar
value="#{pc_Rpt2202.asat_date}"
id="rp2202_input_as_at"
styleClass="calendar"
maxlength="10"
pattern="dd MMM yyyy"
onchange="$(this).val(CompareDates($(this).val()))"
onfocus="$(this).mask('99/99/9999');"
>
<p:watermark for="rp2202_input_as_at" value="dd/MMM/yyyy" />
<f:convertDateTime pattern="dd MMM yyyy" />
</p:calendar>
</td>
我是否可以通过允许数据验证工作来解决这个问题? 这是我想要的一个例子:http://www.flyscoot.com/index.php/en/?gclid=CLvPseXn_74CFQyTjgodz5sAEQ
手动输入日期后,它会自动更改为dd MMMM yyyy格式,而不是从日期选择器中选择。
答案 0 :(得分:0)
您可以使用正则表达式来匹配日期字符串:
var dateReg = /^\d{2}[/s]+\d{2}[/s]+\d{4}$/
然后,您可以使用以下命令确定您的字符串是否与正则表达式匹配:
yourStr.match(dateReg)
答案 1 :(得分:0)
为了验证日期字符串,您需要指定格式是什么,以便可以解析它。无论您是编写自己的解析器还是使用其他人,您都需要这样做。猜测格式并不是一个好主意,因为有许多模糊的格式,有些格式有时模棱两可,但有些模糊不清。
在这种情况下,如果你想输入为ddmmyyy(我建议你使用像dd / mm / yyy这样的东西),你可以解析它,创建一个日期对象,然后根据输入测试日期以检查它有效,例如:
// Input format ddmmyyy
function parseDMY(s) {
var d = s.substr(0,2);
var m = s.substr(2,2)
var y = s.substr(4);
var date = new Date(y, --m, d);
// Check that date is valid, return NaN if not
return (date && date.getFullYear() == y && date.getDate() == d)? date : NaN;
}
但是,如果你使用像d / m / y这样的格式,那么它更简单:
// Input format d/m/yyyy, separator can be any non-digit character (-, /, space, etc.)
// d and m can be one or two digits (e.g. 5 or 05)
function parseDMY(s) {
var b = s.split(/\D+/);
var d = new Date(b[2], --b[1], b[0]);
return (d && d.getFullYear() == y && d.getDate() == d)? d : NaN;
}
请注意,上述内容将返回NaN
两位数年份,因为1/1/05将成为1/1/1905。但是大多数日期字段需要4位数年,所以你也应该这样做。
您可以使用屏幕提示指定格式。不要只使用占位符,因为一旦用户开始输入,它就会消失,因此除非他们删除了他们的输入,否则他们不再具有所需格式的参考,并且那些使用浏览器的人不会使用占位符。支持占位符永远不会看到它。