获取将日期格式化为 'shortDate' 时使用的格式

Get Format used when formatting a date as 'shortDate'

当日期格式为 shortDate(或任何其他格式)时,我们如何获取使用的格式。背景:根据当地的不同,'shortDate' 格式日期不同。 示例:

由于我们的用户可以切换语言,所以使用哪种格式并不明显。这可能会非常混乱。为了帮助他,我们想显示使用过的日期格式,但我找不到获取它的方法。

Stackblitz 示例:https://stackblitz.com/edit/angular-ivy-kyjabd?file=src%2Fapp%2Fapp.component.html

我们尝试过的: 我们查看了,formatDate 是如何获取格式信息的,但是 getNamedFormat 函数没有被导出。

示例代码

import { Component } from '@angular/core';
import { formatDate } from '@angular/common';

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css'],
})
export class AppComponent {
  deDate;
  enDate;
  enGbDate;

  constructor() {
    const date = Date.now();
    this.deDate = formatDate(date, 'shortDate', 'de');
    this.enDate = formatDate(date, 'shortDate', 'en');
    this.enGbDate = formatDate(date, 'shortDate', 'en-GB');
  }
}

您可以使用 angular/common 包中的 getLocaleDateFormat

import {  FormatWidth, getLocaleDateFormat } from '@angular/common';

然后

getLocaleDateFormat(locale, FormatWidth.Short)

其中 locale 是字符串值,例如 en-US 等

返回的 LocaleDateFormat 是正确的,基于此 Angular 正在格式化日期。如果您正在寻找准确的格式,您可能需要根据语言环境创建一个短日期格式的地图并从那里获取它:

getLocaleDateString(locale): string {
    // All you locale short format goes here
    const formats = {
      "de": "DD.MM.YYYY",
      "en-GB": "DD/MM/YYYY",
    };
  
    return formats[locale] || "dd/MM/yyyy";
 } 

检查这个:https://stackblitz.com/edit/angular-ivy-cuu2jo?file=src%2Fapp%2Fapp.component.ts