Используя дату начала, как отнять данную дату от даты начала в javascript в классе, чтобы вывести количество лет

Начал использовать javascript и получил задание создать метод получения, который вычисляет и возвращает количество лет, когда клиент был клиентом.

Однако я не знаю, как сохранить начальную дату «клиентов» в методе получения. Затем, после этого, я не уверен, как перевести разницу между этими датами в годы.

Любая помощь будет благодарна!

Вот кусок кода, над которым я работаю:

  class Customer extends Person{
constructor(id_number, first_name, last_name, email_address, customer_start_date){
super(id_number, first_name, last_name);
this.email_address = email_address;
this.customer_start_date = customer_start_date;



  }
  get email_address(){
    return this.email_address;
  }
  get customer_start_date(){
    customer_start_date = new Date(2018, 11, 22);
    return this.customer_start_date;
  }

}

let s2 = new Staff(123577, "Steve", "Smith", "stevesmith@work.com", (2018, 11, 22));
console.log(s2.first_name , "has been a customer for this many years: ", s2.customer_start_date);

Всего 1 ответ


Дата начала может быть сохранена как собственность клиента. Значением может быть строка типа «2016-07-23» или значение времени, например 1469232000000, или любое другое, которое лучше всего подходит для внутреннего хранилища. Я хотел бы сделать все как UTC, чтобы избежать путаницы часового пояса и летнего времени.

Обратите внимание, что встроенный синтаксический анализатор должен рассматривать «2016-07-23» как UTC, см. Почему Date.parse дает неверные результаты?

Ниже приведен простой пример, демонстрирующий концепцию.

class Person {
  constructor (id, firstName, lastName) {
    this.id = id;
    this.firstName = firstName;
    this.lastName = lastName;
  }
}

class Customer extends Person {
  constructor (id, firstName, lastName, startDate) {
    super(id, firstName, lastName);
    this.startDate = startDate;
  }
  
  // Simplistic example, production function should be much more sophisticated
  get customerYears() {
    return Math.round((Date.now() - new Date(this.startDate)) / (365.25 * 8.64e7));
  }
}

let p = new Customer(0, 'Pete', 'Smith', 񟭑-01-16');

console.log(`${p.firstName} has been a customer since ${p.startDate}, which is about ${p.customerYears} years.`);

Метод customerYears преднамеренно упрощен, вам следует использовать что-то подходящее из Разницы между двумя датами в годах, месяцах, днях в JavaScript или в библиотеке, которая включает арифметические функции дат.


Есть идеи?

10000