1

我正在尝试通过按键输入更新日期。我还需要将选定的日期分配给我的对象的属性。这是我的以下代码:

<input type="date" [value]="dateTime()"  (change)="setDate($event)"/>

dateTime 函数返回存储在我的对象中的日期(如果存在):

dateTime()
   if(this.info.sDate != ""){
     let date = this.info.sDate; //of format DD.MM.YYYY
     let year = date.substring(0,4);
     let month = date.substring(4,6);
     let day = date.substring(6,8);
     date = year + "-" + month + '-' + day;
     return date; // now of the format YYYY-MM-DD as needed
   } else {
     let today = moment().format("YYYY-MM-DD")
    return today; // if not existing, then return the date of today
   } 
  }

现在出现问题,当我尝试设置新日期时:

  setDate(e){
    this.info.sDate= e.target.value;
    }

我尝试将日期的所有更改分配给info.sDate我的对象的属性。我得到警告:platform-browser.js:1133 The specified value "2020--0-1-" does not conform to the required format, "yyyy-MM-dd".虽然我不明白为什么。

有人可以帮助我吗?

4

2 回答 2

0

如果你像这样拼接用户输入的日期,你可能会给自己带来很多问题。格式可能会根据用户的区域设置而改变。

解决这个问题的一种方法是使用三个不同的输入框,一个用于日期的每个元素(日、月、年)。

然后,您可以执行以下操作。

let date = moment(`${this.day}-${this.month}-${this.year}`, "DD-MM-YYYY");
于 2020-01-10T15:10:26.867 回答
0
let year = date.substring(6,10);
let month = date.substring(3,5);
let day = date.substring(0,2);

您的子字符串给出:10.0-1.-20 以上将给出:2020-01-10

于 2020-01-10T14:58:10.593 回答