如何修復在 Next.js 中序列化日期對象的 JSON 錯誤

了解在返回包含日期對象的對象時,在 Next.js 中出現 JSON 可序列化錯誤的原因,以及如何修復它。 如果您使用 Next.js 與數據庫,您肯定會遇到這樣的問題。 您在 getServerSideProps() 或 getStaticProps() 中獲取一些數據,例如這樣使用 Prisma: export async function getServerSideProps() { let cars = await prisma.car.findMany() return { props: { cars, }, } } 現在,如果數據庫表中包含一個包含日期的字段,該字段在 JavaScript 中被轉換為 Date 對象,您將收到如下錯誤: 這是因為您必須返回一個可 JSON 序列化的對象。Date 對象無法直接轉換為 JSON。 在這種情況下,解決方案可以非常簡單,如下所示: export async function getServerSideProps() { let cars = await prisma.car.findMany() cars = JSON.parse(JSON.stringify(cars)) return { props: { cars, }, } } 這將把 Date 對象轉換為字符串。 我喜歡這種解決方案,因為它顯而易見,可見且不具侵入性。 另一個解決方案是使用一個名為 superjson 的庫和它的 Next....

如何在JavaScript中獲取兩個日期之間的天數

給定兩個JavaScript的Date對象,我該如何獲取這兩個日期之間的日期(也表示為Date對象)列表? 我曾經遇到這個問題:給定兩個JavaScript的Date對象,我該如何獲取這兩個日期之間的日期(也表示為Date對象)列表? 這裡有一個用於計算日期的函數: 它以兩個日期對象作為參數,並返回一個日期對象的數組: const getDatesBetweenDates = (startDate, endDate) => { let dates = [] // 為了避免修改原始日期 const theDate = new Date(startDate) while (theDate < endDate) { dates = [...dates, new Date(theDate)] theDate.setDate(theDate.getDate() + 1) } return dates } 使用示例: const today = new Date() const threedaysFromNow = new Date(today) threedaysFromNow.setDate(threedaysFromNow.getDate() + 3) getDatesBetweenDates(today, threedaysFromNow) 如果你還想包括起始日期和結束日期,可以使用下面這個版本,在最後添加它們: const getDatesBetweenDates = (startDate, endDate) => { let dates = [] // 為了避免修改原始日期 const theDate = new Date(startDate) while (theDate < endDate) { dates = [....