【问题标题】:.isAfter return even false.isAfter 甚至返回 false
【发布时间】:2019-01-22 19:03:02
【问题描述】:

我正在使用momentjsEonasdan 插件,我正在尝试检查end 日期是否小于start 日期,为此我使用isAfter 方法:

var start = moment($('#start-datetime').val());
var end = moment($('#end-datetime').val());
console.log((start).isAfter(end));   

这甚至会返回false,值是这样定义的:

  • 开始:07/02/2019 19:58
  • 结束:31/01/2019 19:58

【问题讨论】:

  • 你能用isValid()检查这些值是否也有效
  • @SamiHult 是的,momenttrue 返回给两者

标签: javascript datetime momentjs eonasdan-datetimepicker


【解决方案1】:

尝试将特定格式字符串和语言环境传递给moment,以确保正确解析字符串:

moment(..., "DD/MM/YYYY HH:mm", "en");

moment.locale("en");
...
moment(..., "DD/MM/YYYY HH:mm");

演示:

moment.locale("en");
$("#test-button").click(function() {
  var start = moment($('#start-datetime').val(), "DD/MM/YYYY HH:mm");
  var end = moment($('#end-datetime').val(), "DD/MM/YYYY HH:mm");
  console.log((start).isAfter(end));
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.23.0/moment.min.js"></script>
<input id="start-datetime" type="text" value="07/02/2019 19:58">
<input id="end-datetime" type="text" value="31/01/2019 19:58">
<button id="test-button">Test</button>

【讨论】:

  • 由于一个奇怪的原因我无法让它工作,我猜插件或类似的东西有问题
  • 如果我将日期格式化为您的代码然后调用isValid函数返回false
  • 请澄清:您使用的是什么版本的moment.js,您使用的是什么语言环境?
  • 我使用的是moment.js的2.18.1版本,我没有locale插件
  • 您没有使用语言环境插件,但它可能会从浏览器中获取语言环境。可以肯定的是,请尝试指定区域设置(请参阅我更新的答案)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多