如何在 Angular 中显示带有时区的日期时间

问题描述 投票:0回答:2

我在我的角度应用程序中使用以下代码来显示带有时区的日期时间。 它显示,2022 年 7 月 22 日 12:36:52 GMT-4 我想动态地将 GMT-4 替换为特定时区,比如 EDT、PST 或 CST

我正在使用以下代码,

@Component({
    selector: '',  
    styleUrls: [''],
    templateUrl: '',
    providers: [DatePipe]
})

public class Test {
    clock;
    constructor() {
    this.clock = this.datePipe.transform(new Date(), 'MMMM d, y h:mm:s z');
    }
}
angular date time timezone
2个回答
0
投票

您可以像这样使用管道/自定义管道:

脚本.js:

var toUTCDate = function(date){
    var _utc = new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(),  date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());
    return _utc;
  };
  
  var millisToUTCDate = function(millis){
    return toUTCDate(new Date(millis));
  };
  
  var tzOffsetMillis = function(){
  var date = new Date();
  var offsetMinutes = date.getTimezoneOffset();
  var offsetMillis = offsetMinutes * 60000;
  }
  
    $scope.toUTCDate = toUTCDate;
    $scope.millisToUTCDate = millisToUTCDate;
    $scope.tzOffsetMillis = tzOffsetMillis;
  

index.html:

<body>
   <div ng-controller="ctrl">
      <div>
         utc: {{millisToUTCDate(1400167800 * 1000) | date:'dd-M-yyyy H:mm Z'}}
      </div>
      <div>
         local: {{(1400167800 * 1000) | date:'dd-M-yyyy H:mm Z'}}
      </div>
      <div>
         alt UTC: {{(1400167800 * 1000 + tzOffsetMillis()) | date:'dd-M-yyyy H:mm Z'}}
      </div>
   </div>
</body>

参考:https://plnkr.co/edit/eLwnLZReCy8HXtJyO84q?p=preview&preview


0
投票

您可以通过UTC时间静态值加减来转换任何时区的日期

我在 HTML 页面中将 CST 时区的日期转换为 MM-DD-YYYY HH:mm:ss 格式,如下

* {{ 元素.CreateDtm |日期: 'MM-dd-yyyy HH:mm:ss' : 'UTC+530' }}

“UTC+530”在这里用作我存储在 CST 时区的数据库日期值,但由于 DatePipe 指令,UI 显示与数据库不同步(“DatePipe 的默认时区是您本地的时区,即 GMT-8 或 -800在西雅图”)。

因此,为了同步 UI 和 DB 日期值,我添加了“UTC+530”,这是 UI 和 DB 日期中的时差。

希望这将有助于通过 UTC 时间的静态值加法或减法将您的日期转换为所需的时区格式..

快乐编码...

谢谢,印度 Amol Kalgave

© www.soinside.com 2019 - 2024. All rights reserved.