在javascript问题中解析日期

时间:2017-02-13 08:51:50

标签: javascript extjs

我在javascript中得到这样的日期

var val = "1960-05-15T20:00:00"

但如果我这样做

var date = new Date(val);

我得到的数据是一天后:

1960-05-16 // I use this to obtain it: Ext.Date.format(new Date(val), 'm/d/Y')

你能帮我解析一下这个日期吗?和1960-05-15获得正确的约会对象?

4 个答案:

答案 0 :(得分:2)

您的日期格式为 ISO 8601 ,表示为附加了UTC偏移量的本地时间。 Ext.Date单例使用c标记支持此格式。

var parsedDate = Ext.Date.parse('1960-05-15T20:00:00', 'c');
var dateStr = Ext.Date.format(parsedDate, 'Y-m-d');
// "1960-05-15"

请查看Sencha ExtJs 6.2.1 documentation Ext.Date以获取更多信息。

答案 1 :(得分:0)

您可以使用本机JS以此格式yyyy-mm-dd

完成Date对象的输出

像这样:



var val = '1960-05-15T20:00:00';
var d = new Date(val);
var date = d.getFullYear() + '-' +  ('0' + (d.getMonth() + 1)).slice(-2) + '-' + ('0' +  d.getDate()).slice(-2);
console.log(date);




答案 2 :(得分:0)

当你这样做时

var a = new Date(someDate)

变量a包含根据您当地时区的日期。

如果您希望日期与您输入的格式相同,请使用toISOString方法

var a = (new Date(someDate)).toISOString()

答案 3 :(得分:-1)

我的建议是,您只能假定日期来自的时区。如果您确切知道该日期的来源,a.k.a伦敦,纽约,西德尼等...那么您可以使用momentjs来设置UTC offset

var val = "1960-05-15T20:00:00"

// these are equivalent
moment(val).utcOffset("+08:00");
moment(val).utcOffset(8);
moment(val).utcOffset(480);

所以OP说他们在

  

格鲁吉亚第比利斯GMT + 4.00

所以

moment(val).utcOffset("+04:00");