【问题标题】:Angular - HTML5 input type "datetime-local" not working with Date ObjectAngular - HTML5 输入类型“datetime-local”不适用于日期对象
【发布时间】:2018-09-06 15:10:57
【问题描述】:

我尝试了很多方法。 首先,我将日期作为 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" />

但 UI 窗口为空:"--:-- dd/mm/yy"

谢谢。

【问题讨论】:

    标签: javascript angular typescript momentjs


    【解决方案1】:

    这对我有用:

    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];
    • 好的,它显示在 UI 窗口中,但是时间错误(可能是 UTC)
    【解决方案2】:

    根据我在这里得到的帮助,我设法让它与这个解决方法一起工作:

    var add = moment(this.meeting.start).add(3, 'hours');
    var result = add.toISOString().split('.')[0];
    this.meeting.start = result;
    

    【讨论】:

      【解决方案3】:

      试试这个

      const fmt = 'HH:mm DD/MM/YY';
      const result = moment.utc(this.meeting.start, fmt).local().format(fmt);
      

      模板:

      <input type="datetime-local" [value]="result">
      

      Sample StackBlitz

      【讨论】:

      • 给我一个样品this.meeting.start。它给了我Date: "06/09/2018 20:49:23" 今天的日期,这是我的当地时间。对于您,您必须将 fmt 更改为我在答案中更新的那个。
      • 示例:“2018 年 9 月 6 日星期四 10:00:00 GMT+0300”。我还编辑了帖子。格式正常,但 仍然没有显示任何内容
      • 其格式“Thu Sep 06 2018 10:00:00 GMT+0300”到“06/09/2018 10:00:00”,但 没有价值
      • 我不希望输入类型是文本。它需要是本地日期时间
      • 您已绑定[(ngModel)]value。当你应该只使用其中一个时。
      【解决方案4】:

      这对我有用,我尝试了上面所有的答案,但没有一个有用..

      // 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.log(today);
      console.log(todayMinus7Days);
      

      浏览器控制台的结果是:

      结果是浏览器本身就是:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-03
        • 1970-01-01
        相关资源
        最近更新 更多