vue.js中获取当前日期的前一天

admin 101 0
在Vue.js中获取当前日期的前一天,可通过JavaScript的Date对象实现,首先创建当前日期对象new Date(),调用setDate()方法将日期减1,如date.setDate(date.getDate() - 1),Date对象会自动处理跨月、跨年逻辑,若需格式化日期,可结合toISOString()或自定义格式化方法,在Vue组件中,可将此逻辑封装在methodscomputed中,methods: { getYesterday() { const date = new Date(); date.setDate(date.getDate() - 1); return date; } },调用时直接使用this.getYesterday()即可获取前一天日期对象。

Vue.js 中获取当前日期前一天的实用方法与代码示例

在开发 Vue.js 项目时,经常需要处理日期相关的逻辑,比如获取当前日期的前一天作为数据筛选条件、表单默认值或日志记录时间戳,本文将详细介绍几种在 Vue.js 中获取当前日期前一天的方法,包括原生 JavaScript Date 对象和第三方库 day.js 的实现,并附上完整的代码示例和注意事项。

为什么需要获取"当前日期的前一天"?

在实际业务中,获取前一天的日期应用场景非常广泛:

  • 数据筛选:查询"昨天"的用户活跃数据、订单记录等;
  • 表单默认值:设置"结束日期"为昨天,避免用户选择未来时间;
  • 日志记录:在日志文件中标记"昨日"的操作记录;
  • 时间计算:计算距离某个事件还有多少天,或者统计过去24小时的数据变化。

掌握正确的日期处理方法能显著提升开发效率,避免手动计算可能带来的错误。

使用原生 JavaScript Date 对象

Vue.js 本身不提供专门的日期处理工具,但我们可以直接依赖 JavaScript 原生的 Date 对象实现,核心思路是:获取当前日期 → 减去 1 天 → 处理边界情况(如跨月、跨年)→ 格式化输出

基本实现步骤

(1)获取当前日期并减去 1 天
const currentDate = new Date(); // 获取当前日期(包含时间)
const prevDate = new Date(currentDate); // 避免直接修改原日期
prevDate.setDate(currentDate.getDate() - 1); // 设置为前一天
(2)处理边界情况

setDate() 方法会自动处理跨月、跨年的逻辑:

  • 当前是 2023-03-01,减 1 天后自动变为 2023-02-28(平年)或 2023-02-29(闰年);
  • 当前是 2023-01-01,减 1 天后自动变为 2022-12-31

无需手动处理,Date 对象会自动计算这些边界情况。

(3)格式化日期为 YYYY-MM-DD 常用格式
const formatYear = prevDate.getFullYear();
const formatMonth = String(prevDate.getMonth() + 1).padStart(2, '0'); // 月份从 0 开始,+1 并补零
const formatDay = String(prevDate.getDate()).padStart(2, '0');
const prevDateStr = `${formatYear}-${formatMonth}-${formatDay}`; // 2023-12-31

封装为 Vue 组件方法

在 Vue 组件中,我们可以将日期处理逻辑封装到 methodscomputed 中,提高代码复用性:

<template>
  <div>
    <p>当前日期:{{ currentDate }}</p>
    <p>前一天日期:{{ prevDate }}</p>
    <button @click="updatePrevDate">更新前一天日期</button>
  </div>
</template>
<script>
export default {
  data() {
    return {
      currentDate: '',
      prevDate: ''
    };
  },
  created() {
    this.updateCurrentDate();
    this.updatePrevDate();
  },
  methods: {
    updateCurrentDate() {
      const date = new Date();
      this.currentDate = this.formatDate(date);
    },
    updatePrevDate() {
      const currentDate = new Date();
      const prevDate = new Date(currentDate);
      prevDate.setDate(currentDate.getDate() - 1);
      this.prevDate = this.formatDate(prevDate);
    },
    formatDate(date) {
      const year = date.getFullYear();
      const month = String(date.getMonth() + 1).padStart(2, '0');
      const day = String(date.getDate()).padStart(2, '0');
      return `${year}-${month}-${day}`;
    }
  }
};
</script>

说明

  • created 钩子中初始化当前日期和前一天日期;
  • formatDate 方法统一格式化日期,避免重复代码;
  • 点击按钮可触发 updatePrevDate 重新计算(适用于需要动态更新的场景)。

使用 day.js 轻量级日期库

原生 Date 对象虽然灵活,但格式化和计算逻辑稍显繁琐,推荐使用 day.js——一个轻量级(仅 2KB)、链式调用的日期库,API 设计与 moment.js 兼容,但更简洁。

安装 day.js

在 Vue 项目中通过 npm 或 yarn 安装:

npm install dayjs
# 或
yarn add dayjs

基本使用

在组件中引入 day.js,通过链式调用轻松获取前一天日期:

import dayjs from 'dayjs';
const prevDate = dayjs().subtract(1, 'day').format('YYYY-MM-DD'); // 2023-12-31

核心方法

  • dayjs():获取当前日期;
  • subtract(1, 'day'):减去 1 天(支持 'year''month''hour' 等单位);
  • format('YYYY-MM-DD'):格式化日期(支持自定义格式,如 YYYY年MM月DD日)。

在 Vue 组件中封装

结合 Vue 的响应式特性,封装更简洁的组件:

<template>
  <div>
    <p>当前日期:{{ currentDate }}</p>
    <p>前一天日期(day.js):{{ prevDate }}</p>
    <button @click="updatePrevDate">更新前一天日期</button>
  </div>
</template>
<script>
import dayjs from 'dayjs';
export default {
  data() {
    return {
      currentDate: '',
      prevDate: ''
    };
  },
  created() {
    this.updateDates();
  },
  methods: {
    updateDates() {
      this.currentDate = dayjs().format('YYYY-MM-DD');
      this.prevDate = dayjs().subtract(1, 'day').format('YYYY-MM-DD');
    },
    updatePrevDate() {
      this.prevDate = dayjs().subtract(1, 'day').format('YYYY-MM-DD');
    }
  }
};
</script>

使用 date-fns 函数式日期库

除了 day.js,date-fns 是另一个优秀的日期处理库,它采用函数式编程风格,提供丰富的日期操作函数。

安装 date-fns

npm install date-fns
# 或
yarn add date-fns

基本使用

import { subDays, format } from 'date-fns';
const prevDate = format(subDays(new Date(), 1), 'yyyy-MM-dd'); // 2023-12-31

在 Vue 组件中封装

<template>
  <div>
    <p>当前日期:{{ currentDate }}</p>
    <p>前一天日期(date-fns):{{ prevDate }}</p>
    <button @click="updatePrevDate">更新前一天日期</button>
  </div>
</template

标签: #vue #前天