【问题标题】:Date format conversion from dd-MMM-yyyy to dd-MM-yyyy in javascriptjavascript中从dd-MMM-yyyy到dd-MM-yyyy的日期格式转换
【发布时间】:2014-05-08 03:34:26
【问题描述】:

我正在尝试比较 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 中更改格式?

【问题讨论】:

标签: javascript jquery date-format


【解决方案1】:

这是解决方案,
我已经自定义日期转换函数GetDatedd-MMM-yyyy 格式字符串转换为javascript Date 对象。

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; }
}

【讨论】:

    【解决方案2】:

    这就是答案...

     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】:

      您可以使用jquery date-format plugin 非常有效地格式化日期时间并根据需要进行自定义。

      或者,您也可以使用jqueryUI 来格式化日期。

      $.datepicker.parseDate( format, value, settings )

      【讨论】:

      • 不错的分享,没用过,试试看。
      【解决方案4】:

      卡皮尔

      改进您的功能的方法将是

          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 格式返回日期。

      【讨论】:

      • 或者只是month = months[arr[1]]+1
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-20
      • 1970-01-01
      相关资源
      最近更新 更多