【问题标题】:angular 2 date pipe add or sub hour角度 2 日期管道添加或分小时
【发布时间】:2017-06-21 02:06:13
【问题描述】:

我对新的 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

我该怎么做?

【问题讨论】:

  • “确切时间”是什么意思?那是服务器上的时间吗?

标签: date angular filter pipe


【解决方案1】:

希望它会有所帮助: https://www.reddit.com/r/Angular2/comments/4so1j7/how_to_set_locale_for_datepipe/

这是一个管道,您可以在模板中使用它。基本上就我而言,我的 webApi 返回完整的日期格式(即 Tue Dec 15 2015 13:30:32 GMT-0500(东部标准时间))。因此,在我的管道中,我执行 new Date(value),它将从字符串创建一个 javascript Date 对象。如果您从 http 调用返回的日期不包含任何本地化信息,则解析的日期将与您当前的时区一样。

【讨论】:

  • 这正是我在管道上所做的;导出类 UtcDatePipe 实现 PipeTransform { transform(value: string, format: string): string { let momentDate = moment(new Date(value)).utcOffset(0); if (momentDate.isValid()) return momentDate.format(format);否则返回值; }
【解决方案2】:

您可以扩展PipeTransform 并创建自己的UTCDatePipe,然后覆盖transform 方法和将作为日期的第一个参数执行.UTC(),然后应用给定模式(作为第二个提供)转换方法中的参数)并返回。

这里是 DatePipe 代码作为参考: https://github.com/angular/angular/blob/4.0.0-beta.2/modules/%40angular/common/src/pipes/date_pipe.ts

【讨论】:

  • 感谢您的建议,但 .UTC() 不是 A2 上的本地方法。然后我通过 utcOffset() 方法使用了 moment.js。还是谢谢
【解决方案3】:

您班级的此方法将以“2017 年 6 月 26 日 23:59:00”格式返回您的日期。

月:字符串[] = ['一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月' , '十二月']; getDateFormat(dateStr:string){ 让 dateObj = new Date(dateStr); 让年 = dateObj.getUTCFullYear(); 让月份 = dateObj.getUTCMonth(); 让日期 = dateObj.getUTCDate(); 让时间 = dateObj.getUTCHours() + ':' + dateObj.getUTCMinutes() + ':' +dateObj.getUTCSeconds(); 让 displayDateTime = 日期 + ' ' + this.months[月] + ' ' + 年 + ' ' + 时间; // console.log(displayDateTime); 返回显示日期时间; }

也可以通过编辑此方法返回的“displayDateTime”变量来更改格式。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-01
  • 1970-01-01
  • 2019-01-18
  • 2021-12-05
  • 1970-01-01
  • 2019-01-24
相关资源
最近更新 更多