我对新的 Angular 2 日期管道有问题。
我有一个日期值是;
let myDate = '2017-01-31T17:53:36'
我使用日期管道作为格式化程序,像这样显示在视图中;
{{myDate | date: 'dd/MM/yyyy HH:mm' }}
但它向我显示了当地时间,增加了 +3 小时。
31/01/2017 20:53
我想展示一下确切的时间;
31/01/2017 17:53
我该怎么做?
希望它能有所帮助:https://www.reddit.com/r/Angular2/comments/4so1j7/how_to_set_locale_for_datepipe/
这是一个管道,您可以在模板中使用它。基本上就我而言,我的webApi返回完整的日期格式(即。2015 年 12 月 15 日星期二 13:30:32 GMT-0500(东部标准时间))。所以在我的管道中,我做了新的Date(value),它将从字符串创建一个javascript Date对象。如果从 http 调用返回的日期不包含任何本地化信息,则解析后的日期将像当前时区一样。
您可以扩展PipeTransform
并创建自己的UTCDatePipe
,然后覆盖transform
方法和第一个参数,该参数将是日期执行.UTC()
,然后应用给定的模式(作为转换方法中的第二个参数提供)并返回该模式。
以下是作为参考的 DatePipe 代码:https://github.com/angular/angular/blob/4.0.0-beta.2/modules/%40angular/common/src/pipes/date_pipe.ts
类的此方法将以"2017 Jun 26 23:59:00"格式返回您的日期。
month:string[] = ["1 月"、"2 月"、"3 月"、"4 月"、"5 月"、"6 月"、"7 月"、"8 月"、"9 月"、"10 月"、"11 月"、"12 月"]; getDateFormat(dateStr:string){ let dateObj = new Date(dateStr); let year = dateObj.getUTCFullYear(); let month = dateObj.getUTCMonth(); let date = dateObj.getUTCDate(); let time = dateObj.getUTCHours() + ':' + dateObj.getUTCMinutes() + ':' +dateObj.getUTCSeconds(); 让显示日期时间 = 日期 + ' ' + 这个.月[月] + ' ' + 年 + ' ' + 时间; console.log(显示日期时间); 返回显示日期时间; }
还可以通过编辑此方法返回的"displayDateTime"变量来更改格式。