【问题标题】:How to convert new Date() into JSON string?如何将 new Date() 转换为 JSON 字符串?
【发布时间】:2018-04-01 00:41:12
【问题描述】:

我目前正在开发一个 ionic 应用程序,我正在使用 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);
    });
  }

如果我在我的项目中运行上面的这个方法,事件就会成功创建。 然而,使用此方法将不允许我能够动态创建日历事件,而这正是我想要实现的。因此,不知何故,我需要将home.ts 文件中的createEvent() 中的代码链接到我的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)"
  }, {

所以,当我运行上述程序时,没有任何反应,没有使用此方法创建日历事件。请协助。谢谢。

【问题讨论】:

    标签: javascript jquery json datetime ionic-framework


    【解决方案1】:

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

    【讨论】:

    • 感谢您的反馈。它在我的研究过程中帮助了我。
    【解决方案2】:

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

    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"
      }, {
    

    【讨论】:

      猜你喜欢
      • 2021-01-17
      • 1970-01-01
      • 1970-01-01
      • 2021-03-28
      • 2011-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多