В vanilla JavaScript есть объект ' Date ', вывод которого по умолчанию дает вам строку, которую вы видите:
Sun Aug 02 2020 19:17:00 GMT-0400 (Eastern Daylight Time)
В физической памяти ваша Дата объект на самом деле сохраняется как количество миллисекунд с « 1 января 1970, 00: 00: 00 », что с использованием нашей приведенной выше строки на самом деле составляет « 1596410220000 » миллисекунд.
Вы можете прочитать полные спецификации для объекта ' Date ' здесь: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Numbers_and_dates
Между тем, , чтобы ответить на ваш вопрос более конкретно , ваше средство выбора даты не выдает вывод, который вы указали, а вместо этого применяет свою дату к объекту ' Date ' ( newDate ). Затем вы устанавливаете другой объект ' Date ' ( updatedDate ), чтобы он был равен объекту Date, назначенному вашим средством выбора даты ( newDate ).
Это делается здесь:
onValueChange(newDate: Date) {
this.updatedDate = newDate;
}
Итак, в памяти ваш updatedDate теперь представлен как « 1596410220000 » миллисекунд. Когда вы выводите этот объект ' Date ' на свой HTML, ваш браузер будет использовать вывод по умолчанию для объекта ' Date ', что даст вам:
Sun Aug 02 2020 19:17:00 GMT-0400 (Eastern Daylight Time)
Итак, есть два решения, которые вы можете использовать, если хотите получить эту дату в другом формате.
Сначала вы можете вызвать метод для вашего newDate, чтобы вернуть другую отформатированную строку. Например, если мы хотим вывести его как строку ISO, которую вы искали изначально , мы изменим это :
export class AppComponent implements OnInit {
myDateValue: Date;
updatedDate: Date;
ngOnInit() {
this.myDateValue = new Date();
}
onValueChange(newDate: Date) {
this.updatedDate = newDate;
}
На это:
export class AppComponent implements OnInit {
myDateValue: Date;
updatedDate: String;
ngOnInit() {
this.myDateValue = new Date();
}
onValueChange(newDate: Date) {
this.updatedDate = newDate.toISOString();
}
Сначала мы изменили « updatedDate » на строковый объект и вызвали метод « toISOString ()"на нашей" newDate"(которая является датой, возвращаемой нашим средством выбора даты). Это дает нам строку в формате ISO, которая для нашего примера:
2020-08-02T23:17:00.000Z
Другой вариант - просто применить форматирование к вашей дате в вашем angular DatePipe. Например, , если мы изменим это:
</div>
Updated Date: {{updatedDate}}
</div>
На это:
</div>
Updated Date: {{updatedDate | date:"shortTime"}}
</div>
Мы бы применили формат shortTime, который представляет собой «ч: мм a» или, в нашем примере:
7:17 PM
Полный список форматов даты angular можно прочитать здесь: https://angular.io/api/common/DatePipe
Подводя итог:
Vanilla JavaScript (не angular или ngx- bootstrap) контролирует выходной формат для « Date * 1095. * "объект здесь. Хотя результат выглядит странно, сама переменная хранится не в этом формате, а в миллисекундах (UNIX эпоха ). Вы можете вызывать методы объекта Date, чтобы получить различные форматы (включая ISO, UT C, et c), или вы можете отформатировать его из angular, передав команду форматирования в строке даты.