angular将不同的系统时区转换为北京时间

1 篇文章 0 订阅
1 篇文章 0 订阅

angular将不同的系统时区转换为北京时间


今天某个客户跟我们的产品经理反馈,咱们的管理后台同一条数据在不同电脑的时间显示竟然不同,差了八个小时。此时我便立即意识到是这位客户的电脑时区设置有问题。不禁为我这个月的奖金担忧起来,虽然是客户的电脑问题,但毕竟问题是出在我们的系统,我们也不能要求客户去修改电脑的时区。就像我们人生的哲学道路上应该遵从的一条道理:我们无法改变环境,那只有改变自身去融入这个环境。

首先查看文档
在这里插入图片描述
可以看出,管道提供了一个参数来设置显示某个时区的时间

于是最简单的解决方式是:

{{timestamp | date:‘yyyy-MM-dd HH:mm:ss’:‘GMT+08:00’}}

GMT+08:00是什么呢?
意思是设置当前时区为东八区

或者使用自定义pipe

// core/pipe/china-date.pipe.ts

import { Pipe, PipeTransform } from '@angular/core';
import { DatePipe } from '@angular/common';

@Pipe({
  name: 'chinaDate'
})
export class ChinaDatePipe extends DatePipe implements PipeTransform {

  transform(value: any, ...args: any[]): any {
    let format = 'yyyy-MM-dd HH:mm:ss';
    if (args.length > 0) {
      if (args[0] === 'date') {
        format = 'yyyy-MM-dd';
      } else if (args[0] === 'datetime') {
        format = 'yyyy-MM-dd HH:mm:ss';
      } else {
        format = args[0];
      }
    }
    return super.transform(value, format, 'UTC+8');
  }
}

在app.module.ts中引入后

{{timestamp | chinaDate:‘yyyy-MM-dd HH:mm:ss’}}

其原理都是将时区设置为东八区

好啦,这个月的奖金还有得补救了,哈哈~

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值