如何将新的Date()转换为JSON字符串?

时间:2017-10-19 21:13:21

标签: javascript jquery json datetime ionic-framework

我正在开发一个离子应用程序,我正在使用Ionic Native Calendar Plugin在我的项目中创建日历事件。我希望能够为每个事件动态更改日期和时间,因此我使用Firebase作为后端,并希望将日历参数集成到我的JSON文件中以实现此目的。

一切都运行良好,遵循标准方法,即具有带功能的按钮:

**home.html**

<button ion-button (click)="createEvent()">Add to Calendar</button>

然后声明函数:

**home.ts**

createEvent() {
    this.calendar.createEvent('myEventName', 'myEventLocation', 'myEventNote', new Date(2017, 9, 20, 13, 0, 0, 0), 
    new Date(2017, 9, 20, 14, 0, 0, 0)).then(() => {
      console.log('Event Created!');
    }).catch((err) => {
      console.log('Oops, something went wrong:', err);
    });
  }

如果我在项目中运行上述方法,则会成功创建事件。 然而 ,使用此方法将无法让我能够动态创建日历事件,这正是我想要实现的。所以,不知何故,我需要将createEvent()文件中的home.ts内的代码链接到我的JSON文件中,对吧?所以这是我到目前为止所尝试的,似乎没有任何工作,我不知道我哪里出错了 - 我怀疑我没有将新的Date()参数正确转换为可读的JSON串?以下是我在尝试通过JSON动态创建事件时所做的工作:

home.html的:

<button ion-button (click)="createEvent()">Add to Calendar</button>

home.ts:

import firebase from 'firebase';

export class HomePage {

  events = [];

constructor(..) {

    firebase.database().ref('events').on('value', snapshot => {
      this.events = snapshot.val();
    });

  }

createEvent() {
    this.calendar.createEvent(
      this.item.item[0].title,
      this.item.item[0].location,
      this.item.item[0].notes,
      this.item.item[0].startDate,
      this.item.item[0].endDate,
    ).
      then(() => {
      console.log('Event Created!');
    })
      .catch((err) => {
      console.log('Oops, something went wrong:', err);
    });
  }

JSON文件(在Firebase数据库中):

"events" : [ {
    "title" : "myEventName",
    "location" : "myEventLocation",
    "notes" : "myEventNote",
    "startDate" : "new Date(2017, 9, 20, 13, 0, 0, 0)",
    "endDate" : "new Date(2017, 9, 20, 14, 0, 0, 0)"
  }, {

所以,当我运行上面没有任何操作时,没有使用此方法创建日历事件。请协助。感谢。

2 个答案:

答案 0 :(得分:0)

只需解决问题,如何将日期转换为JSON,您可以使用Date.prototype.toJSON()MDN获取更多信息)。但我不确定这是否会真正解决您动态创建事件的问题。

答案 1 :(得分:0)

经过一番窥探后,我使用以下方法让它工作......

<强> home.html的:

<button ion-button (click)="createEvent()">Add to Calendar</button>

<强> home.ts:

import firebase from 'firebase';

export class HomePage {

public events;
public item;

constructor(...) {

firebase.database().ref('events').on('value', snapshot => {
this.events = snapshot.val();
});

this.item.startDate = new Date(this.item.startDate);
this.item.endDate = new Date(this.item.endDate);

}

createEvent() {
    this.calendar.createEventInteractively(
      this.item.title,
      this.item.eventLocation,
      this.item.notes,
      this.item.startDate,
      this.item.endDate,
    ).
      then(() => {
      console.log('Event Created!');
    })
      .catch((err) => {
      console.log('Oops, something went wrong:', err);
    });
  }

JSON文件(在Firebase数据库中):

"events" : [ {
    "title" : "myEventName",
    "eventLocation" : "myEventLocation",
    "notes" : "myEventNote",
    "startDate" : "2010-05-10T10:20:00+02:00",
    "endDate" : "2010-05-10T18:30:00+02:00"
  }, {