javiens
javiens

Reputation: 141

How to add 1 hour from current date with condition

I want to add 1 hour with a condition from current time. If hour is equal to '22' then it limit to 22 event minute. Stackblitz

HTML

<ion-list  lines="none" class="ion-list-time">
        <ion-radio-group mode="md"  value="NOW">
          <ion-item  >
            <!-- <ion-col class="d-flex"> -->
            <ion-label for="q1" class="as-center">Now</ion-label>
            <ion-radio  slot="start" (ionFocus)="radioFocus()" value="NOW" id="q1"></ion-radio>
          <!-- </ion-col> -->
          </ion-item>
          <ion-item>
            <!-- <ion-col class="d-flex"> -->
            <ion-label for="q2" class="as-center">Later</ion-label>
            <ion-radio slot="start" (ionFocus)="radioFocus()" value="LATER" id="q2"></ion-radio>
          <!-- </ion-col> -->
            <ion-col class="d-flex" *ngIf="isTimeShow">
            <ion-datetime displayFormat="hh:mm A" [(ngModel)]="TakeAwayTime" placeholder="time"></ion-datetime>
          </ion-col>
          </ion-item>
          <ion-item>
            <ion-label for="q3">Time</ion-label>
            <ion-datetime displayFormat="hh:mm A" [(ngModel)]="TakeAwayTime" id="q3"></ion-datetime>
          </ion-item>
        </ion-radio-group>
      </ion-list>

Component

TakeAwayTime: String = new Date().toISOString();

  radioFocus() {
    var dt = new Date();
    console.log(dt)
    const newdate = dt.setMinutes( dt.getMinutes() + 60 );
    this.TakeAwayTime = new Date( newdate).toISOString();
  }
  now() {
    this.TakeAwayTime = new Date().toISOString();
  }

Upvotes: 0

Views: 179

Answers (1)

Santi Barbat
Santi Barbat

Reputation: 2295

Using moment:

TakeAwayTime: moment.Moment = moment();

radioFocus() {
    const nowPlusOneHour = moment().add(1, 'hour');
    const todayEve = nowPlusOneHour.hours(22).minutes(0).seconds(0);
    
    this.TakeAwayTime = nowPlusOneHour.isAfter(todayEve) ? todayEve : nowPlusOneHour;
}
  
now() {
    this.TakeAwayTime = moment();
}

If this is something that updates the UI, I strongly recommend using ngZone.run:

this.ngZone.run(() => this.TakeAwayTime = moment());

Remember to inject the service in your constructor with constructor(private ngZone: NgZone)

Upvotes: 2

Related Questions