【问题标题】:Javascript Date Parsing issue in IEIE 中的 Javascript 日期解析问题
【发布时间】:2015-07-16 14:54:48
【问题描述】:

我在 JavaScript 2015-07-22 00:00:00.0 中有一个字符串。我需要将其转换为mm/dd/yy 格式

我尝试使用var d = new Date(from_date); 进行解析,它适用于 Chrome,但不适用于 IE 或 Firefox

然后我尝试了正则表达式模式替换,但它仍然只在 Chrome 中有效,但在 IE 或 Firefox 中无效

var st = '2015-07-22 00:00:00.0'
var pattern = '\d{4})\-(\d{2})\-(\d{2})/'
var dt = new Date(st.replace(pattern, '$2-$3-$1'));
var output = dt.getMonth() + 1 + '/' + dt.getDate() + '/' + dt.getFullYear();
alert(output) 

JSFiddle

请给我点光。

【问题讨论】:

    标签: javascript jquery regex internet-explorer firefox


    【解决方案1】:

    如果日期始终采用该格式,您可以将其取出并使用standard date format 使其正常工作。

    var r = "2015-07-22 00:00:00.0"
    var date = new Date(r.substring(0, 4),   //year
                        r.substring(5, 7),   //month
                        r.substring(8, 10),   //day
                        r.substring(11, 13), //hour
                        r.substring(14, 16), //min
                        r.substring(17, 19), //sec
                        r.substring(20));    //mili
    

    【讨论】:

    • @JoshStevens 因为如果你不能控制字符串的格式并且它不能被识别,那么解析它的值并将它们显式设置在正确的参数中是最好的方法。
    • @JoshStevens 哇,没必要这么粗鲁......原因是唯一被接受的标准日期字符串是以下格式之一:"October 13, 1975 11:13:00", "October 13, 1975 11:13", or "October 13, 1975" 这些都不是。当然这很简单,但是您的答案在技术上可能不起作用,因为它将非标准格式传递给构造函数。通过打破这一点,我们避免了任何兼容性问题。编辑他在粗鲁之后删除了他的答案......有些人
    • 大家好,感谢您关注此问题,当我尝试使用此代码时,我提前转身,我得到的日期为 Fri Jan 02 201 00:00:00 GMT+0100(W. Europe Standard Time ) 但是如果你看到我的日期字符串它完全不同的日期jsfiddle.net/m1tht293
    • @sathishkumar 你能对你的主要问题进行编辑吗?包括代码,完成后在这里评论,我会看看它
    • @unstable eagle 我没有添加任何代码只是尝试了您的代码并打印输出,结果日期不同再次感谢
    【解决方案2】:

    每当您在 Javascript 中对日期和/或时间进行任何操作时,我建议您使用 momentJS

    在您的情况下,您应该执行以下操作来解析字符串:

    var x = moment(st, "YYYY-MM-DD");
    

    然后输出:

    console.log( x.format("MM/DD/YYYY") );
    

    【讨论】:

      【解决方案3】:

      这对你应该没问题。

      var date = new Date('2015-07-22 00:00:00.0'.replace(/ /g, 'T')),
        monthDigits = [ '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12' ];
      
      console.log(monthDigits[date.getMonth()] + '/' + date.getDate() + '/' + date.getFullYear());
      

      【讨论】:

      • 第一行在 Firefox 中返回 Invalid Date。
      • 是的,对不起,我忘了在 replace() 方法中添加
      猜你喜欢
      • 2013-03-26
      • 1970-01-01
      • 2012-01-13
      • 2013-10-07
      • 1970-01-01
      • 2012-08-16
      • 1970-01-01
      • 2023-03-06
      • 2012-06-30
      相关资源
      最近更新 更多