Я пробовал разными способами. Сначала я получаю дату как объект Moment.js,
this.meeting.start = event.date.local().toDate();
Я также пробовал следующее:
this.meeting.start = new Date(this.meeting.start.toLocaleString());
мой HTML:
<input
type = "datetime-local"
class = "form-control"
value = "{{meeting.start}}"
[(ngModel)] = "meeting.start" />
но окно пользовательского интерфейса пусто: "-: - дд / мм / гг"
Спасибо.
Попробуй это
const fmt = 'HH:mm DD/MM/YY';
const result = moment.utc(this.meeting.start, fmt).local().format(fmt);
Шаблон:
<input type = "datetime-local" [value] = "result">
Пример: «Thu Sep 06 2018 10:00:00 GMT + 0300». Я тоже редактировал пост. Формат работает, но <input> по-прежнему ничего не показывает
Его форматирование от «Thu Sep 06 2018 10:00:00 GMT + 0300» до «06/09/2018 10:00:00», но <input> не имеет значения
Я не хочу, чтобы тип ввода был текстом. он должен быть локальным по дате и времени
Вы связали [(ngModel)]
и value
. Когда вам следует использовать только один из них.
Ты почти там; просто формат должен быть YYYY-MM-DDTHH:mm
(и вам не нужен формат при вызове utc()
): angular-u9inhr.stackblitz.io.
@AaYy Какой браузер вы используете? Он работает в Chrome версии 68.0.3440.106 (официальная сборка) (64-разрядная версия).
О, эта ссылка запуталась и использовала тот же код, что и ответ. Попробуйте угловой-1fsxgs.stackblitz.io. Вы можете редактировать, используя эта ссылка
Это работает для меня:
let today = new Date();
this.meeting.start = today.toISOString().split('T')[0]
в html
<input
type = "date"
class = "form-control"
value = "{{meeting.start}}"
[(ngModel)] = "meeting.start" />
см. пример в https://angular-rb5vmu.stackblitz.io (последний элемент: Формат даты ввода)
Отредактировано!
работал, потому что я использовал type = "date", это работает с type = "datetime-local" this.meeting.start = today.toISOString (). split ('.') [0];
Хорошо, это отображается в окне пользовательского интерфейса, но неправильное (вероятно, UTC) время
Основываясь на помощи, которую я получил здесь, мне удалось заставить это работать с этим обходным путем:
var add = moment(this.meeting.start).add(3, 'hours');
var result = add.toISOString().split('.')[0];
this.meeting.start = result;
Это сработало для меня, я попробовал все ответы выше, но ни один из них не сработал.
// Init dates
let today = moment.utc().local().format('YYYY-MM-DDTHH:mm');
let todayMinus7Days = moment.utc().local().subtract(7, 'days').format('YYYY-MM-DDTHH:mm');
console.info(today);
console.info(todayMinus7Days);
И результат из консоли браузера:
И в результате сам браузер:
Дайте мне образец
this.meeting.start
. Он дает мнеDate: "06/09/2018 20:49:23"
на сегодняшнюю дату, то есть по моему местному времени. Для вас вам придется сменитьfmt
на тот, который я обновил в ответе.