我想在jquery中比较开始日期和结束日期。 aspx页面中的代码如下所示:
<asp:TextBox ID="tbStartDate" runat="server" CssClass="textbox" Width="80px" contentEditable="false" onchange="javascript:compareDates();"></asp:TextBox>
<asp:ImageButton runat="Server" ID="ibStartCalendar" ImageUrl="~/Images/calendar.jpg"
Height="18px" AlternateText="Click to show calendar" />
<act:CalendarExtender ID="ceStartDate" runat="server" Format="dd-MMM-yyyy" TargetControlID="tbStartDate" PopupButtonID="ibStartCalendar" CssClass="Calendar">
</act:CalendarExtender>
和javascript功能:
function compareDates() {
var start = $("#<%=tbStartDate.ClientID %>").val();
var end = $("#<%=tbEndDate.ClientID %>").val();
if (!compareDate(start, end)) {
$("#<%=lblMsg.ClientID %>").html("Start Date can not be greater than End Date");
}
}
function compareDate(start, end) {
if (start.length > 0 && end.length > 0) {
var stDate = new Date(start);
var enDate = new Date(end);
var compDate = enDate - stDate;
if (compDate >= 0)
return true;
else {
return false;
}
} else { return true; }
}
要求是在文本框中以“dd-MMM-yyyy”格式显示日期,以便我无法在calenderExtender中更改格式。
当我保持此格式的星号日期和结束日期变为“NaN”时。如果我在calenderExtender中更改格式,我会得到正确的结果。但正如我所说,我不能改变那里的格式。如何在javascript中更改格式?
答案 0 :(得分:1)
这是解决方案,
我已将自定义日期转换功能GetDate
转换为dd-MMM-yyyy
格式字符串转换为javascript日期对象。
function GetDate(str)
{
var arr = str.split("-");
var months = ["jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"];
var month = months.indexOf(arr[1].toLowerCase());
return new Date(parseInt(arr[2]), month, parseInt(arr[0]));
}
function compareDate(start, end) {
if (start.length > 0 && end.length > 0) {
var stDate = GetDate(start);
var enDate = GetDate(end);
var compDate = enDate - stDate;
if (compDate >= 0)
return true;
else {
return false;
}
} else { return true; }
}
答案 1 :(得分:1)
您可以非常有效地使用jquery date-format plugin格式化日期时间,并根据需要进行自定义。
或者,您也可以使用jqueryUI格式化日期。
$.datepicker.parseDate( format, value, settings )
答案 2 :(得分:1)
这是答案......
function GetDate(str) {
debugger;
var arr = str.split('-');
var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun','Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
var i = 1;
for (i; i <= months.length; i++) {
if (months[i] == arr[1])
{
break;
}
}
var formatddate = i + '/' + arr[0] + '/' + arr[2];
return formatddate;
}
function StartDateTimeEndDate() {
var startDate = document.getElementById('<%=EFF_START_DATEDVTextBox.ClientID %>').value
var endDate = document.getElementById('<%=EFF_END_DATEDVTextBox.ClientID %>').value
var startdt = GetDate(startDate)
var enddt = GetDate(endDate)
if ((Date.parse(enddt) <= Date.parse(startdt))) {
alert("End date should be greater than Start date");
document.getElementById('<%=EFF_END_DATEDVTextBox.ClientID %>').value = "";
}
}
答案 3 :(得分:0)
卡皮尔西,
改进您的功能方法
function GetDate(str) {
var arr = str.split('-');
var month = "";
var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
var i = 0;
for (i; i < months.length; i++) {
if (months[i] == arr[1]) {
break;
}
}
i++;
if (i >= 10) month = i;
else month = "0" + i;
var formatddate = arr[0] + '-' + month + '-' + arr[2];
return formatddate;
}
这将以dd-mm-yyyy格式返回日期。