Mocking Dates 
Sometimes you need to be in control of the date to ensure consistency when testing. Vitest uses @sinonjs/fake-timers package for manipulating timers, as well as system date. You can find more about the specific API in detail here.
Example 
js
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
const businessHours = [9, 17]
function purchase() {
  const currentHour = new Date().getHours()
  const [open, close] = businessHours
  if (currentHour > open && currentHour < close) {
    return { message: 'Success' }
  }
  return { message: 'Error' }
}
describe('purchasing flow', () => {
  beforeEach(() => {
    // tell vitest we use mocked time
    vi.useFakeTimers()
  })
  afterEach(() => {
    // restoring date after each test run
    vi.useRealTimers()
  })
  it('allows purchases within business hours', () => {
    // set hour within business hours
    const date = new Date(2000, 1, 1, 13)
    vi.setSystemTime(date)
    // access Date.now() will result in the date set above
    expect(purchase()).toEqual({ message: 'Success' })
  })
  it('disallows purchases outside of business hours', () => {
    // set hour outside business hours
    const date = new Date(2000, 1, 1, 19)
    vi.setSystemTime(date)
    // access Date.now() will result in the date set above
    expect(purchase()).toEqual({ message: 'Error' })
  })
})