как использовать "локаль" календаря primeNg для более чем одного значения или динамически, а также автоматически изменять дату? - PullRequest
0 голосов
/ 09 мая 2020

на его основе, например, если локаль - Франция, рабочий день с понедельника по воскресенье, если немецкий - с субботы до солнца, как я могу использовать более одного в локали

<p-calendar [(ngModel)]="value" [locale]="fr\de/?/??what i write here"></p-calendar>


// в файле TS

this.de = {
      firstDayOfWeek: 1,
      dayNames: [, "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday","Sunday"],
      dayNamesShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
      dayNamesMin: ["Su","Mo","Tu","We","Th","Fr","Sa"],
      monthNames: [ "January","February","March","April","May","June","July","August","September","October","November","December" ],
      monthNamesShort: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun","Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ],
      today: 'Today',
      clear: 'Clear',
      dateFormat: 'mm/dd/yy',
      weekHeader: 'Wk'
  };

this.fr = {
      firstDayOfWeek: 0,
      dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
      dayNamesShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
      dayNamesMin: ["Su","Mo","Tu","We","Th","Fr","Sa"],
      monthNames: [ "January","February","March","April","May","June","July","August","September","October","November","December" ],
      monthNamesShort: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun","Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ],
      today: 'Today',
      clear: 'Clear',
      dateFormat: 'mm/dd/yy',
      weekHeader: 'Wk'
  };

1 Ответ

0 голосов
/ 14 мая 2020

в файле commponent .ts

@Component({
  selector: 'app-calendar-demos',
  templateUrl: './calendar-demos.component.html',
  styleUrls: ['./calendar-demos.component.scss']
})
export class CalendarDemosComponent implements OnInit {
  value: Date;
  fday:number;
  _localeCal: any;
  x=Intl.DateTimeFormat().resolvedOptions().timeZone;

  constructor() { 
    if(this.x=='Asia/Calcutta'){
      this.fday=1;
    }
    else if(this.x==' Europe/Paris'||'USA'||'Canada/Pacific'){
      this.fday=0;
    }
  }


  ngOnInit(): void {
    var offset = new Date().getTimezoneOffset();
    console.log(offset);
    console.log(Intl.DateTimeFormat().resolvedOptions().timeZone);
    this._localeCal = {
      firstDayOfWeek:this.fday,
      dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
      dayNamesShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
      dayNamesMin: ["Su","Mo","Tu","We","Th","Fr","Sa"],
      monthNames: [ "January","February","March","April","May","June","July","August","September","October","November","December" ],
      monthNamesShort: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun","Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ],
      today: 'Today',
      clear: 'Clear',
      dateFormat: 'mm/dd/yy',
      weekHeader: 'Wk'
  };

}


}

здесь мы просто проверяем часовой пояс с помощью getTimezoneOffset () js fun. Сохраняем его в переменной и переходим к дню первой недели, проверяя условие на конструкторе для отзыва автоматически .. консоль, чтобы увидеть результат. вы можете изменить состояние else if по мере необходимости.

в компоненте. html

<p-calendar [(ngModel)]="value" [locale]="_localeCal"></p-calendar>

calendar for utc region {{x}}



если вы знаете другой способ, пожалуйста, ответьте. спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...