【问题标题】:Date went wrong when using Momentjs date format in IE 11在 IE 11 中使用 Momentjs 日期格式时日期出错
【发布时间】:2020-10-18 16:42:11
【问题描述】:

我在当前日期使用 Moment.js 格式函数

var startDate = moment(new Date()).format('MM/DD/YY');

结果是 06/28/20

发生的情况是它只保留了年份部分:20“06/28/20”,在我使用new Date(startDate)之后,结果是“1920 年 6 月 28 日星期一 00:00:00 GMT+0530(印度标准时间)”.

在此之后,当我在 “06/28/20”上应用另一种格式时

startDate = moment(startDate ).format('MM-DD-YYYY');

结果是 06-28-1920

在 Google Chrome 和 Firefox 中,第二次尝试的正确日期为:06-28-2020

我的代码是:

$(document).ready(function() {

var startDate = moment(new Date()).format('MM/DD/YY');
alert("startDate ==="+startDate +"==="+new Date(startDate ));

startDate = moment(startDate ).format('MM-DD-YYYY');
alert("startDate ==="+startDate +"==="+new Date(startDate ));

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.11.2/moment.min.js"></script>

【问题讨论】:

    标签: javascript momentjs date-formatting


    【解决方案1】:

    请找到下面的 sn-p ,这可能会对您有所帮助

    $(document).ready(function() {
    
      var startDate = moment(new Date()).format('MM/DD/YY');
      alert("startDate ==="+startDate +"==="+new Date(startDate ));
      
      startDate = moment(new Date(startDate)).format('MM-DD-YYYY');
      var str="06-28-2020";
      
      
      alert("startDate ==="+startDate +"==="+new Date(str.replaceAll("-","/")));
      
      });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
    
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.11.2/moment.min.js"></script>

    【讨论】:

    • 嗨@Dilip,感谢您提供详细信息,这里的问题与alpsavrum 澄清的momentjs 格式方法使用有关。
    【解决方案2】:

    如果您使用 Moment,请使用 Moment。使用 Date.parse()new Date() 解析日期字符串(引擎盖下相同)不是 recommended

    您的方法应该是使用 moment(DATE, "DD/MM/YY") 自动处理您面临的 2k 年问题。

    【讨论】:

    • 嗨@alpsavrum,请对此进行更多解释,moment.format(dateformat) 在 chrome 中的行为也不同,对于不同的日期格式 'YY-DD-MMM'、'DD-MM-YY' ,'MM/DD/YY' .
    • moment.format 不正确使用。像 moment().format(dateformat) 一样使用它。你应该在使用它之前构建它。
    • 我将行 var startDate = moment(new Date()).format('MM/DD/YY') 转换为 var startDate1 = moment(new Date(),'MM/DD/YY '),它在所有浏览器中都可以正常工作。您是否建议相同,请确认。
    • 嗨@alpsavrum,moment(new Date()).format('YYYY/MM/DD') 结果为 2020/06/28(输出中所需的格式)根据我替换的建议上面一行是:moment(new Date() ,'YYYY/MM/DD'),但结果是 1593368656727,我们如何才能得到这个值作为格式 'YYYY/MM/DD'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-19
    • 2018-11-24
    • 1970-01-01
    相关资源
    最近更新 更多