TypeScript sort by date not working

If you are running into issues with the accepted answer above. I got it to work by creating a new Date and passing in the date parameter.

  private getTime(date?: Date) {
    return date != null ? new Date(date).getTime() : 0;
  }

  public sortByStartDate(array: myobj[]): myobj[] {
    return array.sort((a: myobj, b: myobj) => {
      return this.getTime(a.startDate) - this.getTime(b.startDate);
    });
  }

As possible workaround you can use unary + operator here:

public sortByDueDate(): void {
    this.myArray.sort((a: TaskItemVO, b: TaskItemVO) => {
        return +new Date(a.dueDate) - +new Date(b.dueDate);
    });
}

Try using the Date.getTime() method:

public sortByDueDate(): void {
    this.myArray.sort((a: TaskItemVO, b: TaskItemVO) => {
        return a.dueDate.getTime() - b.dueDate.getTime();

    });
}

^ Above throws error with undefined date so try below:


Edit

If you want to handle undefined:

private getTime(date?: Date) {
    return date != null ? date.getTime() : 0;
}


public sortByDueDate(): void {
    this.myArray.sort((a: TaskItemVO, b: TaskItemVO) => {
        return this.getTime(a.dueDate) - this.getTime(b.dueDate);
    });
}

I believe it's better to use valueOf

public sortByDueDate(): void {
    this.myArray.sort((a: TaskItemVO, b: TaskItemVO) => {
        return a.dueDate.valueOf() - b.dueDate.valueOf();
    });
}

according to docs: /** Returns the stored time value in milliseconds since midnight, January 1, 1970 UTC. */