【问题标题】:How to convert a date string to timezone specific date.?如何将日期字符串转换为时区特定日期。?
【发布时间】:2020-06-26 14:01:47
【问题描述】:

您好,我有一个 Angular 5 项目。我在根据用户时区显示日期时遇到问题。

这是我的示例 sn-p 代码。

  formatDateForTableDisplay(dateValueAsString: string) {

    console.log(dateValueAsString); // this will print for example 2020-05-31

    const dateObject = new Date(dateValueAsString);

    if (this.formGroup.get('frequency').value === 'PER_DAY') {
      return this.datePipe.transform(dateObject, 'mediumDate');
    } else if (this.formGroup.get('frequency').value === 'PER_MONTH') {
      return this.datePipe.transform(dateObject, 'LLL, yyyy');
    } else {
      return this.datePipe.transform(dateObject, 'yyyy');
    }
  }

问题是假设我们将日期字符串作为 2020-05-31 传递给函数 formatDateForTableDisplay。在另一个用户中,时区可能是 6 月 1 日,因为用户时区比 GMT 早 +8 小时,这需要打印为 2020-06-01 。我怎样才能实现它

谢谢

【问题讨论】:

    标签: angular angular5 date-pipe


    【解决方案1】:

    dateValueAsString 以 2020-05-31 的形式出现,这意味着您没有小时、分钟或秒(在这种情况下,小时是最重要的)。所以你无法判断dateValueAsString 是在凌晨 2 点保存(意味着它将保持为 2020-05-31)还是在晚上 11 点保存(意味着它应该转换为 2020-06-01)

    【讨论】:

    • 是的,我没有时间,因为我做了一天的弹性搜索聚合查询。
    • 1) 我不知道弹性搜索聚合查询是什么。 2)对于时区,您需要时间,而不仅仅是一天。我看到 formatDateForTableDisplay 是一个函数,它告诉我你的日期范围很广,这意味着你需要保存这些日期的小时数才能正确抵消它们。
    猜你喜欢
    • 2020-01-20
    • 2016-03-14
    • 2020-01-20
    • 1970-01-01
    • 1970-01-01
    • 2017-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多