wanasit / chrono

A natural language date parser in Javascript
MIT License
4.61k stars 340 forks source link

isOnlyDate() gives incorrect result when using Monday or some other weekday only #514

Open Pranoy1c opened 1 year ago

Pranoy1c commented 1 year ago

I would expect the following to give false because there is no date but it gives true instead:

console.log("Result: "+chrono.parse('monday',null,{ forwardDate: true })[0].start?.isOnlyDate())

I think the problem is due to the current implementation of isOnlyDate() which doesn't check if the day, month is isCertain too. Also not sure if year needs to be certain too for it to be a isOnlyDate?:

isOnlyDate() {
        return !this.isCertain("hour") && !this.isCertain("minute") && !this.isCertain("second");
    }
wanasit commented 1 year ago

Hello @Pranoy1c.

The isOnlyDate() has not documented, but my intention was to check if the component describes a date but does not include time, hence "is only date". The implementation follows that meaning exactly.

Could I ask what is the use-case you have in mind for the function?

Pranoy1c commented 1 year ago

@wanasit From what I understand, monday doesn't describe a date, it only specifies a day. It neither has date, nor time.