【问题标题】:javascript comparing date formats [duplicate]javascript比较日期格式[重复]
【发布时间】:2018-04-12 23:49:53
【问题描述】:

我正在尝试比较不同格式的日期。当我比较以下内容时,我看到了错误的结果,如何将日期转换为标准格式以获得正确的结果。

Heres my Fiddle

var date1 = "4/12/2018 9:52:21 PM";
    var date2 ="4/12/2018 9:52:51 PM";
    var date3 ="2018/04/12 21:54:40";
    var dateCondition1 = (date3>date2);
    var dateCondition2 = (date2>date1);
    alert(dateCondition1); //shows wrong result
    alert(dateCondition2); //shows right result

这是一个正确的比较吗?

var date1 = new Date("4/12/2018 9:52:21 PM");
var date2 =new Date("4/12/2018 9:52:51 PM");
var date3 =new Date("2018/04/12 21:54:40");
var dateCondition1 = (date3>date2);
var dateCondition2 = (date2>date1);
alert(dateCondition1); //shows wrong result
alert(dateCondition2); //shows right result

【问题讨论】:

  • 看看momentjs.com,让处理日期变得微不足道
  • 对于它的价值,您正在比较 3 个字符串,而不是日期。您需要将日期字符串解析为日期对象以对其执行操作或正确比较它们,所有这些都非常容易使用 moment.js

标签: javascript jquery datetime


【解决方案1】:

尝试使用纯 JavaScript:

var date1 = new Date("4/12/2018 9:52:21 PM");
var date2 =new Date("4/12/2018 9:52:51 PM");
var date3 =new Date("2018/04/12 21:54:40");
var dateCondition1 = (date3.getTime() > date2.getTime());
var dateCondition2 = (date2.getTime() > date1.getTime());
alert(dateCondition1);
alert(dateCondition2);

【讨论】:

    【解决方案2】:

    在您比较字符串的第一个代码块中

    "4/12/2018 9:52:21 PM" > "4/12/2018 9:52:21 PM";
    

    在第二段代码中比较是正确的,

    为什么比较两个字符串会返回布尔值?

    “马特·鲍尔”

    因为与许多编程语言一样,字符串是按字典顺序比较的。

    您可以将其视为字母顺序的更高级版本,不同之处在于字母顺序仅涵盖 26 个字符 a 到 z。

    替代

    使用库时刻js更容易

    <script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.min.js"></script>
    <script>
    //Currrent Date
    var now = moment(),
    custom = moment('Mon 03-Jul-2017, 11:00 AM', 'ddd DD-MMM-YYYY, hh:mm A');
    document.write("Compare dates=>" + now.isAfter(custom));
    </script>

    如果您想使用三个比较,您可以根据需要设置日期格式

    <html>
    	<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.min.js"></script>
    	    <script>
    	    var now   = moment();
    	    var date1 = moment('4/12/2018 9:52:21 PM','DD/MM/YYYY hh:mm:ss A');
    	    var date2 = moment('4/12/2018 9:52:51 PM','DD/MM/YYYY hh:mm:ss A');
    	    var date3 = moment('2018/04/12 21:54:40','YYYY/DD/MM hh:mm:ss A');
    	    var dateCondition1 = (date3.isAfter(date2));
    	    var dateCondition2 = (date2.isBefore(date1));
    	    alert(dateCondition1);
    	    alert(dateCondition2);
    	    </script>
    </html>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-14
      • 1970-01-01
      • 2012-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-21
      • 1970-01-01
      相关资源
      最近更新 更多