Tìm kiếm trang web

html - Angular 7 (Change)-Hàm trên Input kiểu Date không hoạt động, nhưng tại sao định dạng lại sai?


Tôi đang cố gắng cập nhật ngày thông qua nhập liệu bàn phím. Tôi cũng cần ngày được chọn được gán cho một thuộc tính của đối tượng của tôi. Đây là mã của tôi như sau:

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

Hàm dateTime trả về ngày, được lưu trong đối tượng của tôi, nếu nó tồn tại:

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
   } 
  }

Bây giờ có vấn đề xuất hiện, khi tôi đang cố gắng đặt một ngày mới:

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

Tôi cố gắng gán mọi thay đổi về ngày tháng vào thuộc tính info.sDate của đối tượng của tôi. Tôi nhận được cảnh báo: platform-browser.js:1133 Giá trị được chỉ định "2020--0-1-" không tuân theo định dạng yêu cầu, "yyyy-MM-dd". mặc dù tôi không hiểu tại sao.

Có ai có thể giúp tôi không?

Câu trả lời #1

let year = date.substring(6,10);
let month = date.substring(3,5);
let day = date.substring(0,2);

Chuỗi con của bạn đang cho: 10.0-1.-20, trên sẽ cho: 2020-01-10

Câu trả lời #2

Bạn có thể gây ra rất nhiều vấn đề cho bản thân nếu bạn ghép nối ngày do người dùng nhập theo cách này. Định dạng có thể thay đổi tùy thuộc vào cài đặt vùng của người dùng.

Một cách bạn có thể giải quyết vấn đề này là sử dụng ba ô nhập liệu khác nhau, mỗi ô cho một thành phần của ngày tháng (Ngày, Tháng, Năm).

Sau đó bạn có thể làm điều gì đó giống như sau.

let date = moment(`${this.day}-${this.month}-${this.year}`, "DD-MM-YYYY");