2017-06-02 104 views
0

我在这里浏览了几个老问题,但其中大部分都是关于Angular 2 beta/RC版本,它们没有附带日期管道。如何在Angular中将我的HTML5 datetime-local输入字段设置为当前本地日期时间?

<input type="datetime-local" [ngModel]="datetime" (ngModelChange)="datetime = $event" name="datetime"> 

constructor() { 
    this.datetime = new Date().toISOString().slice(0, 16); 
} 

这几乎是正确的工作,因为它输出当前日期时间为:02-06-2017 05:02 AM其中的日期是正确的,但还不是时候

THIS answer从2015年12月这表明了以下解决方案走近。这里的本地日期时间是02-06-2017 10:48 AM

我还没有在Angular的任何地方配置默认时区。需要我这样做还是有更好的解决方案来解决这个问题?此外,它可能会实现内置date pipe,但我不知道如何。

回答

1

这里是一个plnkr演示

要显示当前本地日期,时间,你只需要如下简单地创建像串的ISO:

this.datetime = this.datetime.getFullYear() + '-' + 
("0" + (this.datetime.getMonth() + 1)).slice(-2) 
+ '-' + ("0" + this.datetime.getDate()).slice(-2) 
+ 'T' + this.datetime.getHours() + ':' + this.datetime.getMinutes(); 

随意评论,让我知道,如果你有任何问题。

+0

对不起,我忘了重新检查。这只能正确输出时间,而不是日期。在6月4日,它显示5月5日。所以这个月减少1,并且一天比应该是1更多。如果我将'getMonth'作为'datetime.getMonth()+ 1'并加1,并将getDate中的'+ 1'作为'datetime.getDate()'移除,则输入字段不接受它。控制台报告错误:'指定的值“2017-51-04T15:30”不符合所需的格式。格式为“yyyy-MM-ddThh:mm”,后跟可选的“:ss”或“:ss.SSS”.'。任何想法,朋友? – anonym

+1

对不起@anonym加1 getDate(),而不是getMonth()。现在它是固定的。请尝试让我知道,如果你仍然有问题 – Dhyey

+0

就像我在评论中提到的,我曾尝试添加1 getMonth()而不是getDate(),并报告错误。但现在它就像一个魅力!再次感谢。 – anonym

相关问题