'Nest class-validator minDate throws error even when the date is greater

I'm using Nest with class-validator and attempting to validate that the date provided by the UI is no earlier than today using @isDateString() and @MinDate()

export class SchemaDto {
    @IsOptional()
    @IsDateString()
    @MinDate(new Date())
    myDate?: Date;
}

The data I am sending in is a Date Objected with the following date:

    Mon Oct 04 2021 00:00:00 GMT-0400 (Eastern Daylight Time)

The error I am getting from class-validator is:

     minimal allowed date for myDate is Fri Oct 01 2021 15:57:18 GMT-0400 (Eastern Daylight Time) 

The problem:

If I remove the minDate decorator, everything works fine but I would rather validate this common case.

info: typescript: ~4.1.4

node: 12.4.0

class-validator: 0.13.1

nest: 7.0.0



Solution 1:[1]

To validate with @MinDate

export class SchemaDto {
    @IsNotEmpty()
    @Transform( ({ value }) => new Date(value))
    @IsDate()
    @MinDate(new Date())
    myDate: Date;
}

But if value is optional, it might null or undefined, so:

export class SchemaDto {
    @IsOptional()
    @Transform( ({ value }) => value && new Date(value))
    @IsDate()
    @MinDate(new Date())
    myDate?: Date;
}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 H?i An