简体   繁体   中英

How to work with Date and Time in NodeJS, Mongoose and TypeScript?

I come from the java world and I'm starting in NodeJS. I'm having a hard time understanding how to work with dates and times in NodeJS.

Only dates and only hours.

Here is an example:

export interface teste extends mongoose.Document {
    description: string,
    dateTest: ????,
    openingTime: ????,
    finalTime: ????,
    dateTimeRecord: ????
}

const testeSchema = new mongoose.Schema({
    description:{
        type: String,
        required: true,
        maxlength: 200,
        minlength: 3
    },
    dateTest:{
        type: ?????,
        required: true
    },
    openingTime:{
        type: ?????,
        required: true
    },
    finalTime:{
        type: ?????,
        required: true
    },
    dateTimeRecord:{
        type: ?????,
        required: true
    }
}

export const Teste = mongoose.model<Teste>('Teste', testeSchema)

In all the places I left ????? I don't know what to put.

  • In the dateTest I need to record only dates, without the hours.
  • In the openingTime and finalTime I need to store only hours, no dates.
  • In the dateTimeRecord I need to store the moment that something happened (date and time).

How to do this?

Mongoose has a Date type. (Docs here) Replace the ??? with Date and you should be all set.

in Mongoose you have a type of Date you can set a default date (Actually it uses ISODate) you can code it like this

const testeSchema = new mongoose.Schema({
    description:{
        type: String,
        required: true,
        maxlength: 200,
        minlength: 3
    },
    dateTest:{
        type: Date,
        default:Date.now // this sets the default date time stamp using proper ISODate format
        required: true
    },
    openingTime:{
        type: Date,
        required: true
    },
    finalTime:{
        type: Date,
        required: true
    },
    dateTimeRecord:{
        type: Date,
        required: true
    }
}

you can read more in the mongoose documentation here

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM