isAtOrBefore

isAtOrBefore

  • (date1: date) => (date2: date) => boolean
  1. Test if a date is the same as or before another

    const janFirst2025 = new Date('2025 1 1')
    const isAtOrBeforeJanFirst2025 = isAtOrBefore(janFirst2025)
    
    const decFirst2024 = new Date('2024 12 1')
    isAtOrBeforeJanFirst2025(decFirst2024) // is true
    
    const now = new Date()
    isAtOrBeforeJanFirst2025(now) // is false
    
    isAtOrBeforeJanFirst2025(janFirst2025) // is true
    const janFirst2025 = new Date('2025 1 1')
    const isAtOrBeforeJanFirst2025 = isAtOrBefore(janFirst2025)
    
    const decFirst2024 = new Date('2024 12 1')
    isAtOrBeforeJanFirst2025(decFirst2024) // is true
    
    const now = new Date()
    isAtOrBeforeJanFirst2025(now) // is false
    
    isAtOrBeforeJanFirst2025(janFirst2025) // is true
    
    const janFirst2025 = new Date('2025 1 1')
    const isAtOrBeforeJanFirst2025 =
      isAtOrBefore(janFirst2025)
    
    const decFirst2024 = new Date('2024 12 1')
    isAtOrBeforeJanFirst2025(decFirst2024) // is true
    
    const now = new Date()
    isAtOrBeforeJanFirst2025(now) // is false
    
    isAtOrBeforeJanFirst2025(janFirst2025) // is true
    const janFirst2025 = new Date('2025 1 1')
    const isAtOrBeforeJanFirst2025 =
      isAtOrBefore(janFirst2025)
    
    const decFirst2024 = new Date('2024 12 1')
    isAtOrBeforeJanFirst2025(decFirst2024) // is true
    
    const now = new Date()
    isAtOrBeforeJanFirst2025(now) // is false
    
    isAtOrBeforeJanFirst2025(janFirst2025) // is true
    
  2. Sometimes we need to compare dates. Below, we want to clean up our email. Let's archive any that are at least a year old.

    // assume today is 2025 1 15
    const oneYearAgo = new Date('2024 1 15')
    
    const emails = [
      {
        subject: 'Policy renewal',
        received: new Date('2024 1 15'),
      },
      {
        subject: 'Soccer league starting soon',
        received: new Date('2024 1 16'),
      },
    ]
    
    const shouldArchive = compose([get('received'), isAtOrBefore(oneYearAgo)])
    const archive = keepWhen(shouldArchive)
    const emailsToArchive = archive(emails)
    
    console.log(emailsToArchive)
    // is [
    //   {
    //     subject: 'Policy renewal',
    //     received: 2024 1 15
    //   }
    // ]
    // assume today is 2025 1 15
    const oneYearAgo = new Date('2024 1 15')
    
    type Email = {
      subject: string
      received: Date
    }
    
    const emails: Email[] = [
      {
        subject: 'Policy renewal',
        received: new Date('2024 1 15'),
      },
      {
        subject: 'Soccer league starting soon',
        received: new Date('2024 1 16'),
      },
    ]
    
    const shouldArchive = compose([
      get('received')<Email>,
      isAtOrBefore(oneYearAgo),
    ])
    const archive = keepWhen(shouldArchive)<Email[]>
    const emailsToArchive = archive(emails)
    
    console.log(emailsToArchive)
    // is [
    //   {
    //     subject: 'Policy renewal',
    //     received: 2024 1 15
    //   }
    // ]
    
    // assume today is 2025 1 15
    const oneYearAgo = new Date('2024 1 15')
    
    const emails = [
      {
        subject: 'Policy renewal',
        received: new Date('2024 1 15'),
      },
      {
        subject: 'Soccer league starting soon',
        received: new Date('2024 1 16'),
      },
    ]
    
    const shouldArchive = compose([
      get('received'),
      isAtOrBefore(oneYearAgo),
    ])
    const archive = keepWhen(shouldArchive)
    const emailsToArchive = archive(emails)
    
    console.log(emailsToArchive)
    // is [
    //   {
    //     subject: 'Policy renewal',
    //     received: 2024 1 15
    //   }
    // ]
    // assume today is 2025 1 15
    const oneYearAgo = new Date('2024 1 15')
    
    type Email = {
      subject: string
      received: Date
    }
    
    const emails: Email[] = [
      {
        subject: 'Policy renewal',
        received: new Date('2024 1 15'),
      },
      {
        subject: 'Soccer league starting soon',
        received: new Date('2024 1 16'),
      },
    ]
    
    const shouldArchive = compose([
      get('received')<Email>,
      isAtOrBefore(oneYearAgo),
    ])
    const archive = keepWhen(shouldArchive)<Email[]>
    const emailsToArchive = archive(emails)
    
    console.log(emailsToArchive)
    // is [
    //   {
    //     subject: 'Policy renewal',
    //     received: 2024 1 15
    //   }
    // ]