0

我正在尝试格式化日期,但我一直遇到这样的问题,即每当我格式化时区就会被添加到时间中。调用.toUTCString()它时有效,但这会给我一种我不想要的格式。所以我想打电话.toUTCString()然后格式化日期。但随后时区又回来了。

我正在使用该date-fns框架,但也许这可以通过 javascript 日期函数来实现?

由于 GMT 为 +2,如何格式化日期并避免在日期上增加额外的小时数?以10:0012:00为例。

@Pipe({
  name: 'exactDate'
})

export class ExactDatePipe implements PipeTransform {

  transform(value: string, args: string) {

    const parsedDate: string = datefns.format(new Date(value).toUTCString(), args);

    return parsedDate;
  }
}
4

1 回答 1

2

date-fns很清楚

它总是返回本地时区的日期,无论您传递什么:时间戳、字符串或日期对象。

如果我正确理解您的问题,您不希望这种行为。相反,请尝试使用 Date.toLocaleString 函数提供的options参数,例如

var date = new Date(),
  options = {
    timeZone: 'UTC',
    timeZoneName: 'short'
  },
  str = date.toLocaleString('en-US', options);
  // str format like "5/31/2017, 1:55:21 PM GMT"

您可以完全控制格式 - 这是MDN 文档

于 2017-05-31T13:59:15.197 回答