【问题标题】:Moment js showing wrong date in the alertMoment js 在警报中显示错误的日期
【发布时间】:2016-05-19 02:11:15
【问题描述】:

我正在使用Moment js 来获取正确的日期格式。

所以我做了什么,我有一个文本框,我在其中插入今天的日期,例如 09/02/2016 它在这里正确显示

var dt1 = moment(document.getElementById('TextBox1').value + " " + document.getElementById('DrpTime').value).zone(0).format("dd/MM/yyyy HH:mm");

但是当我在下面的警报中检查相同的日期时

alert(dt1);

我得到Mon Feb 01 2016 09:00:00 GMT +0530的价值

我尝试了here 的逻辑,但对我没有帮助。知道出了什么问题。

我的 HTML

<asp:TextBox ID="TextBox1" runat="server" Width="80" ></asp:TextBox>
<cc3:Calendar ID="Calendar1" runat="server" DatePickerMode="true" TextBoxId="TextBox1"
     DatePickerImagePath="../../Images/icon2.gif" CultureName="en-GB">
</cc3:Calendar>
<asp:DropDownList ID="DrpTime" runat="server" Width="65px">
     <asp:ListItem Value="09:00">09:00</asp:ListItem>
     <asp:ListItem Value="13:00">13:00</asp:ListItem>
     <asp:ListItem Value="17:00">17:00</asp:ListItem>
     <asp:ListItem Value="21:00">21:00</asp:ListItem>
</asp:DropDownList>

注意:我想要 dd/MM/yyyy 格式的日期

我还从下面的链接中获取了 js:-

http://momentjs.com/downloads/moment.min.js

更新

function ValidateRecord() {
        var StrPriError = "";
        var dt1 = moment(document.getElementById('TextBox1').value + " " + document.getElementById('DrpTime').value, "dd/MM/yyyy HH:mm");
        var dt2 = moment(document.getElementById('TextBox2').value + " " + document.getElementById('DrpTime3').value, "dd/MM/yyyy HH:mm");
        var dt3 = moment(document.getElementById('TextBox3').value + " " + document.getElementById('DrpTime4').value, "dd/MM/yyyy HH:mm");
        var dt4 = moment(document.getElementById('TextBox4').value + " " + document.getElementById('DrpTime5').value, "dd/MM/yyyy HH:mm");
        alert(dt1);

        if (StrPriError != "") {
            alert(StrPriError);
            return false;
        }
        else {
            return true;
        }
    }

【问题讨论】:

  • 您提到的格式实际上是日期的默认 JavaScript 格式。您能否发布更多 JavaScript 代码,因为这应该可以正常工作。
  • @Martin:更新了问题,除此之外,我在我的页面中添加了时刻js
  • @Martin——不,不是。 ECMA-262 中指定的唯一格式是 ISO 8601,并且 09/02/2016 不符合,Mon Feb 01 2016 09:00:00 GMT +0530 也不符合(这与我的浏览器返回的 date 不同) .toString).
  • @RobG:同意你 Rob,因为如果它是相同的,我会在不使用 moment.js 的情况下破解它。我刚刚添加了moment.js 以获得所需的格式
  • @coder——最好手动解析字符串,一个库(比如moment.js)可以帮助解决这个问题。 ;-)

标签: javascript date momentjs


【解决方案1】:

尝试将moment解析器方法中的第二个参数设置为实际解析格式

var dt1 = moment(value1 + " " + value2, "DD/MM/YYYY HH:mm");

UPD:

要检查两个日期是否相等,请使用以下代码:

 date_1 = moment(value1 + " " + value2, "DD/MM/YYYY HH:mm");
 date_2 = moment(value3 + " " + value4, "DD/MM/YYYY HH:mm");

 date_1.isSame(date_2) // return boolean value

UPD2:

MomentJS 有一些方法可以检查日期是否相等。

 date_1.isAfter(date_2)              // date_1 > date_2
 date_1.isBefore(date_2)             // date_1 < date_2
 date_1.isBetween(date_2, date_3)    // date_2 < date_1 < date_3
 date_1.isSame(date_2)               // date_1 === date_2
 date_1.isSameOrAfter(date_2)        // date_1 >= date_2
 date_1.isSameOrBefore(date_2)       // date_1 <= date_2

【讨论】:

  • 不工作,获取日期为We/02/yyyy 03:30 我试过这样var dt1 = moment(document.getElementById('TextBox1').value + " " + document.getElementById('DrpTime').value, "DD/MM/YYYY HH:mm").zone(0).format("dd/MM/yyyy HH:mm"); alert(dt1); return false;
  • 不需要,我认为您编辑的代码给了我预期的输出
  • 在 2 个文本框中插入两个相等的日期时只有一件事,条件与 true 不匹配 if (date1 == date2 {alert("dates are same"}
  • 我的 date1 和 date 2 是var date1 = moment(document.getElementById('TextBox1').value + " " + document.getElementById('DrpTime').value, "DD/MM/YYYY HH:mm"); var date2 = moment(document.getElementById('TextBox2').value + " " + document.getElementById('DrpTime3').value, "DD/MM/YYYY HH:mm");
  • 我不想那样,我想比较if (date1 === date2 || date1 === date3 || date1 === date4 || date2 === date3 || date2 === date4 || date3 === date4) { alert("Dates and time cannot be same"); },如果所有日期和时间都相同,它应该会显示一条消息
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-06
  • 1970-01-01
相关资源
最近更新 更多