javascript 中的 newDate() 函数转换为 CDT

newDate() function in javascript converting to CDT

我正在调用以下函数来格式化来自 API 响应的日期。在日期为“2021-10-02”的响应中,新的 date() 会将其转换为 2021 年 10 月 1 日星期一 19:00:00 GMT-0500(中央夏令时),这是一天前。在 UI,我没有得到响应的确切日期。如何转换回 CST 时区?

applyFormat(date){
        var day = new Date(date);
        var dd = day.getDate();
        var mm = day.getMonth() + 1;
        var yyyy = day.getFullYear();
        var theDay = mm + '/' + dd + '/' + yyyy;
        return theDay;
    }

new Date('2021-10-02") 将在给定日期创建一个格林威治标准时间午夜的日期 - 它是规范的一部分 - 但是 new Date('2021-10-02T00:00:00') 将创建一个给定你所在时区时间的日期

您有两个选择:

function applyFormat(date) {
  var day = new Date(date+'T00:00:00');
  return day.toLocaleDateString('en-US')
}
console.log(applyFormat('2021-10-02'))

或者根本不使用 Date 对象

function applyFormat(date) {
  const [yyyy, mm, dd] = date.split('-').map(Number)
  var theDay = mm + '/' + dd + '/' + yyyy;
  return theDay;
}
console.log(applyFormat('2021-10-02'))

或者如果你真的想使用 Date 对象

function applyFormat(date) {
  const [yyyy, mm, dd] = date.split('-').map((v, i) => +v-(i%2))
  const day = new Date(yyyy, mm, dd, 0, 0, 0, 0);
  return day.toLocaleDateString('en-US');
}
console.log(applyFormat('2021-10-02'))