make an event happen at specific time

I would setup an observable that emits a boolean value based on your condition. And have that wrapped inside an interval that emits every second (or longer if need be).

public canBook$ = interval(1000).pipe(
  mapTo(new Date()),
  map(now => (this.bookings.startDate <= now) && (this.bookings.endDate > now)),
  distinctUntilChanged()
);

If the date formats do not match, you can add another map() to convert the new Date() into the format you need before checking the conditional.

The distinctUntilChanged() operator ensures the observable doesn't keep emitting false every second. It will only emit a new value if it is different from the previous one.

Then in your template file.

<div *ngIf="canBook$ | async">
  <button (click)="selectedBook(bookings)">
    Use
  </button>
</div>