gpt4 book ai didi

javascript - Struts 2 JQuery 日期选择器问题

转载 作者:行者123 更新时间:2023-11-29 10:43:20 30 4
gpt4 key购买 nike

我正在使用 Struts 2 Jquery 日期选择器来选择日期。

如下图

 <sj:datepicker name="testDate" 
parentTheme="simple"
zindex="2006"
timepicker="true"
changeYear="true"
displayFormat="dd/mm/yy"
timepickerFormat="HH:mm:ss"
timepickerShowSecond="true"
duration="fast"
readonly="true"
></sj:datepicker>

如果你能看到我提到的格式是 dd/mm/yy 并且时间格式是 HH:mm:ss,那么当用户使用时一切正常选择日期..

当用户选择日期时,我将在我的 Action 类中以预期格式获取日期。但是,当我在完成操作后重定向到同一页面时,我的日期选择器文本字段被错误的格式设置为 mm/dd/yyy .. 我希望我的日期日期选择器格式设置为我在 datepicker 标记中提到的日期格式。

因为这个用户感到困惑,谁能告诉我如何设置用户在操作前甚至操作完成后选择的相同格式

我正在使用 struts2 jquery 插件

最佳答案

问题是因为 dd/mm/yy 根据 struts2 jquery 不是有效格式

有效格式为 dd.mm.yydd-mm-yy

此链接的有效格式为:Click here

dd.mm.yy
mm/dd/yy
DD, d MM yy
d M, yy
dd-mm-yy

他们说

displayFormat --> A pattern used for the visual display of the formatted date, e.g. yy- mm-dd , dd.mm.yy

但是模式 dd/mm/yy 不工作。他们也没有在dd/mm/yy displayFormat的描述中指定/(Slash)。他们仅指定了 .(点)和 -(破折号)。

我也试过 dd//mm//yy 是有效的!!!

但不适用于 dd/mm/yy :(

原因:

日期选择器无法解析字符串值 dd/mm/yy。它将 dd/mm/yy 视为 mm/dd/yy

对于某些值,当日和月之间的最大值都小于 12 时,它将失败视为日。

例如:

Input: 02/07/2014 09:30:41

displayFormat: dd/mm/yy

Actual Day : 2
Actual Month : 7
Actual Time: 09:30:41

Parsedday : 7
Parsedmonth : 2
Parsedtime : : 00:00:00

Output: 07/02/2014 00:00:00

这是一个悬而未决的问题。 Struts2 Jquery 团队 接受 这是一个问题。此问题的状态为已接受。

这是问题链接

Issue 1057 in struts2-jquery: datepicker can't parse a string value with a time component

解决方案

我会建议你使用

displayFormat="dd-mm-yy"

解决您的问题或等待issue 1057得到解决。

根据我的研究,Following function needs to be debugged with alert(err);

解析的实际函数是

//#######################################################################################
// Splits datetime string into date ans time substrings.
// Throws exception when date can't be parsed
// If only date is present, time substring eill be ''
//#######################################################################################
var splitDateTime = function(dateFormat, dateTimeString, dateSettings)
{
try {
var date = $.datepicker._base_parseDate(dateFormat, dateTimeString, dateSettings);
} catch (err) {
if (err.indexOf(":") >= 0) {
// Hack! The error message ends with a colon, a space, and
// the "extra" characters. We rely on that instead of
// attempting to perfectly reproduce the parsing algorithm.
var dateStringLength = dateTimeString.length-(err.length-err.indexOf(':')-2);
var timeString = dateTimeString.substring(dateStringLength);

return [dateTimeString.substring(0, dateStringLength), dateTimeString.substring(dateStringLength)];

} else {
throw err;
}
}
return [dateTimeString, ''];
};

源代码链接:第 1447 行 jquery-ui-timepicker-addon.js

 //#######################################################################################
// override parseDate() because UI 1.8.14 throws an error about "Extra characters"
// An option in datapicker to ignore extra format characters would be nicer.
//#######################################################################################
$.datepicker._base_parseDate = $.datepicker.parseDate;
$.datepicker.parseDate = function(format, value, settings) {
var splitRes = splitDateTime(format, value, settings);
return $.datepicker._base_parseDate(format, splitRes[0], settings);
};

源代码链接:第 1340 行 jquery-ui-timepicker-addon.js

关于javascript - Struts 2 JQuery 日期选择器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24666893/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com