问题
I am using ion2-calendar.
this is my html:
<ion-calendar [(ngModel)]="date"
(onChange)="onChange($event)"
[type]="type"
[format]="'YYYY-MM-DD'">
</ion-calendar>
and this is onchange in ts:
onChange($event) {
console.log("onchange event called");
console.log(moment().format('DD-MM-YYYY'));
}
This is my console:
onSelect event called
25-06-2018
But i am always getting current month and year,no matter which date I choose. Only the date value is changing. Its showing current month and year in the console for all dates. Can someone tell me how to get selected date in dd-mm-yy format from $event object.
Edit- This is what i get for console.log($event)
Moment {_isAMomentObject: true, _i: 1530297000000, _isUTC: false, _pf: {…}, _locale: Locale, …}
_d
:
Sat Jun 30 2018 00:00:00 GMT+0530 (India Standard Time) {}
_i
:
1530297000000
_isAMomentObject
:
true
_isUTC
:
false
_isValid
:
true
_locale
:
Locale {_calendar: {…}, _longDateFormat: {…}, _invalidDate: "Invalid date", ordinal: ƒ, _dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, …}
_pf
:
{empty: false, unusedTokens: Array(0), unusedInput: Array(0), overflow: -2, charsLeftOver: 0, …}
__proto__
:
Object
It shows correct date of click. It would be great if someone could tell me how to extract date from this .
回答1:
$event of OnChange() is a moment object.
you can format like this: $event.format('DD-MM-YYYY')
回答2:
moment() statement always generates current time like new Date().
you should use a statement like moment("1995-12-25") or other various statements.
For details, please have a look at this moment.js docs
update
To say the conclusion first,
.html (nothing changed)
<ion-content padding>
<ion-calendar [(ngModel)]="date"
(onChange)="onChange($event)"
[type]="type"
[format]="'YYYY-MM-DD'">
</ion-calendar>
.ts
onChange(event) {
console.log(event.format('DD-MM-YYYY')); // For actual usage.
console.log(moment(event).format('DD-MM-YYYY')); // the statement you might think about
}
the above code gives you what you want.
What I want to say is that you should not use moment() but moment(event). Because moment() returns moment instance which has current time while moment(event) returns moment instance which has the time event carries.
来源:https://stackoverflow.com/questions/51022756/how-to-get-selected-date-from-ionic-2-calendar-onchange-method