Использование moment.js при попытке создать событие в родном календаре IOS

Я использовал ввод «datetime-local», чтобы получить от пользователя дату начала и дату окончания для ввода в собственный календарь. Это мой код для получения и форматирования "datetime-local":

    var s = $("#startDate").val();
    var startDate = moment(s).toDate();
    var e = $("#endDate").val();
    var endDate = moment(s).toDate();

Этот код принимает правильную дату, но устанавливает время на событие на весь день. Например, если я укажу 1:00 21.07.2014 в качестве даты начала, а затем 1:00 22.07.2014, будет создано событие на весь день 21.07.2014. .

Вот JSFiddle


person Giddswindle    schedule 21.07.2014    source источник
comment
Если вы используете Cordova/Angular, вы можете использовать этот API для управления своим календарем на iOS или Android: ngcordova. .com/docs/#Календарь   -  person Kristian Benoit    schedule 24.10.2014


Ответы (1)


У вас видимо опечатка. Передайте e, чтобы построить endDate, а не s.

var s = $("#startDate").val();
var startDate = moment(s).toDate();
var e = $("#endDate").val();
var endDate = moment(e).toDate(); // <==== this line had used the wrong variable

Или вы могли бы вместо этого просто назвать их встроенными, чтобы избежать путаницы:

var startDate = moment($("#startDate").val()).toDate();
var endDate = moment($("#endDate").val()).toDate();

Что касается того, почему это создало «событие на весь день» - я не могу быть абсолютно уверен, так как я не знаком с конкретным API календаря, который вы используете. Однако возможно, что, поскольку вы отправляли одно и то же время начала и окончания, это интерпретировалось как событие на весь день. Думаю, исправление опечатки решит проблему.

person Matt Johnson-Pint    schedule 21.07.2014
comment
Я изменил его, и он все еще говорит, что это событие на весь день. Я буду продолжать проверять материал. Большое спасибо за вашу помощь, Мэтт. - person Giddswindle; 21.07.2014