如何以一种优雅的方式并使用 JavaScript 解决 UTC 问题,该问题在以“2018-10-25”格式实例化日期时减去一天?

How to solve, in an elegant way and using JavaScript, the UTC problem, which subtracts a day when instantiating a Date in the format '2018-10-25'?

我正在遗留系统上工作,在 DB 中,json 的生日是“1992-05-18”。我正在使用 AngularJS 并且在更新表单的 input type = "date" 中应用此变量的数据绑定时,有必要实例化一个 Date 对象。像这样:

//person.byrthday = '1992-04-26'
var person.birthday = new Date (person.birthday); 
// after person.byrthday = '1992-04-25T00:00:00.000Z'

如何在没有"breaking"双向数据绑定的情况下通过前端优雅地解决这个问题?

我发现自己在巴西 UTC -03:00

有几种方法可以解决这个问题。一个快速而肮脏的解决方案可能是利用 moment.js。您可以通过这种方式将 API 的响应转换为真正的日期格式。

如果你不想使用额外的库,你可以创建一个函数来解析日期字符串。您可以执行以下操作来解析是成为正确的日期:

var dateSplit = person.birthday.split('-');
var mydate = new Date(dateSplit[0], dateSplit[1] - 1, dateSplit[2]); 
person.birthday= mydate;

请注意月份索引从 0 开始(又名 January=0)。希望这对您有所帮助。