Reputation: 141
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
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