将datetime转换为有效的JavaScript日期



我有一个datetime字符串以以下格式提供给我:

yyyy-MM-dd HH:mm:ss
2011-07-14 11:23:00

当试图将其解析为JavaScript date()对象时,它失败了。将其转换为JavaScript可以理解的格式的最佳方法是什么?

下面的答案暗示了类似

var myDate = new Date('2011-07-14 11:23:00');

我用的就是这个。看来这可能是浏览器的问题。我为此做了一个http://jsfiddle.net/czeBu/。它在Chrome中为我工作。在OS X上的Firefox 5.0.1中,它返回Invalid Date

失败取决于浏览器实现对Date的处理。解析以及它们如何允许不符合日期标准的日期字符串

ECMAScript基于ISO 8601日历日期扩展格式的简化定义了日期时间的字符串交换格式。
格式为:YYYY-MM-DDTHH:mm:ss.sssZ

我们可以将字符串强制写入

const getDateFromString = str => {
  const [date,time] = str.split(" ");
  // reformat string into YYYY-MM-DDTHH:mm:ss.sssZ
  str = `${date}T${time}.000Z`
  return new Date(str);
};
let date = getDateFromString('2011-07-14 11:23:00');
console.log(date)


老回答:

至于你的格式,一些OSX浏览器坚持把破折号变成斜杠。

适用于所有地方,包括OS x上的Safari 5和Firefox 5。

更新:Fx Quantum(54)不需要替换,但Safari 11仍然不高兴,除非你转换如下

var date_test = new Date("2011-07-14 11:23:00".replace(/-/g,"/"));
console.log(date_test);

可以使用getmonth和getday方法来获取日期。

我在这里附上我的解决方案:

var fullDate = new Date(); console.log(fullDate);
var twoDigitMonth = fullDate.getMonth() + "";
if (twoDigitMonth.length == 1)
    twoDigitMonth = "0" + twoDigitMonth;
var twoDigitDate = fullDate.getDate() + "";
if (twoDigitDate.length == 1)
    twoDigitDate = "0" + twoDigitDate;
var currentDate = twoDigitDate + "/" + twoDigitMonth + "/" + fullDate.getFullYear(); console.log(currentDate);

使用Date.parse()返回一个数字,然后使用new Date()来解析它:

var thedate = new Date(Date.parse("2011-07-14 11:23:00"));

使用说明:

enter code var moment = require('moment')
var startDate = moment('2013-5-11 8:73:18', 'YYYY-M-DD HH:mm:ss')

Moment.js工作得很好。

你可以使用moment.js,它会将DateTime对象转换为有效的Javascript格式的日期:

   moment(DateOfBirth).format('DD-MMM-YYYY'); // put format as you want 
   Output: 28-Apr-1993

希望对你有帮助

function ConvertDateFromDiv(divTimeStr) {
    //eg:-divTimeStr=18/03/2013 12:53:00
    var tmstr = divTimeStr.toString().split(' '); //'21-01-2013 PM 3:20:24'
    var dt = tmstr[0].split('/');
    var str = dt[2] + "/" + dt[1] + "/" + dt[0] + " " + tmstr[1]; //+ " " + tmstr[1]//'2013/01/20 3:20:24 pm'
    var time = new Date(str);
    if (time == "Invalid Date") {
        time = new Date(divTimeStr);
    }
    return time;
}

new Date("2011-07-14 11:23:00");适合我。

你可以使用get方法:

var fullDate = new Date();
console.log(fullDate);
var twoDigitMonth = fullDate.getMonth() + "";
if (twoDigitMonth.length == 1)
    twoDigitMonth = "0" + twoDigitMonth;
var twoDigitDate = fullDate.getDate() + "";
if (twoDigitDate.length == 1)
    twoDigitDate = "0" + twoDigitDate;
var currentDate = twoDigitDate + "/" + twoDigitMonth + "/" + fullDate.getFullYear(); console.log(currentDate);

相关内容

  • 没有找到相关文章

最新更新