对当前日期进行按年、按月、按日的取值

news/2025/1/12 2:53:12 标签: javascript, 前端, vue.js

 对当前日期进行按年、按月、按日的取值。

其规则为:

按年 为当前日期到来年同一日期的前一天(2024-12-01到2025-11-30)。

按月 为当前日期到下个月的同一日期的前一天 (2024-12-01 到 2024-12-31)。

按日  为当前日期到下一日(2024-12-01 到 2024-12-02)

实验多种方式 ,要么引入组件 要么拆分重组 很麻烦,最后试了个方法觉得挺简便的, 记录下来。

组件用的是vue3的 DatePicker 日期选择器 

      <div style="display: flex; width: 100%; justify-content: space-between">
                <el-date-picker
                  v-model="form.StartTime" 
                  format="YYYY-MM-DD"
                  value-format="YYYY-MM-DD"
                  type="date"
                  placeholder="开始日期"
                  @change="changeEnterprise"
                />
                <div>—</div>
                <el-date-picker
                  v-model="form.EndTime"
                  format="YYYY-MM-DD"
                  value-format="YYYY-MM-DD"
                  type="date"
                  placeholder="结束日期"
                  disabled
                />
              </div>

组件改写选择开始时间,结束时间自动计算。 

   <el-select v-model="form.report" placeholder="请选择时间类型" @change="changeType">
                <el-option v-for="dict in bus_report_type" :key="dict.value" :label="dict.label" :value="dict.value" />
// 此段代码是字典表取值 转译成假数据
 <el-option key="0" label="按年" value="0">
 <el-option key="1" label="按月" value="1">
 <el-option key="2" label="按日" value="2">
              </el-select>

 选完时间类型后,显示结束时间。

javascript">//根据类型查周期
const changeEnterprise = () => {
  if (form.value.Type) {
    const dataTime = new Date(form.value.StartTime);
    if (form.value.Type == 0) {
      // 增加一年
      dataTime.setFullYear(dataTime.getFullYear() + 1);
      // 减去一天
      dataTime.setDate(dataTime.getDate() - 1);
    }
    if (form.value.Type == 1) {
      // 增加一个月
      dataTime.setMonth(dataTime.getMonth() + 1);
      // 减去一天
      dataTime.setDate(dataTime.getDate() - 1);
    }
    if (form.value.Type == 2) {
      // 增加一天
      dataTime.setDate(dataTime.getDate() + 1);
    }
    // 格式化日期为 YYYY-MM-DD 字符串
    const year = dataTime.getFullYear();
    const month = String(dataTime.getMonth() + 1).padStart(2, '0'); // 月份从0开始,所以需要+1,并且补零
    const day = String(dataTime.getDate()).padStart(2, '0'); // 日期可能也需要补零

    form.value.EndTime = `${year}-${month}-${day}`;
    console.log('startDate', dataTime, form.value.EndTime);
  } else {
    form.value.Type = null;
  }
};

附加一个设置 dateTime 的默认值为当前月的第一天到最后一天 

javascript">// 获取当前日期
const currentDate = new Date();

// 获取当前月的第一天
const firstDay = new Date(currentDate.getFullYear(), currentDate.getMonth());

// 获取当前月的最后一天
const lastDay = new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 0);
 
// 将日期格式化为 YYYY-MM-DD
const 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}`;
};

// 设置 dateTime 的默认值为当前月的第一天到最后一天
const dateTime = ref([formatDate(firstDay), formatDate(lastDay)]);


http://www.niftyadmin.cn/n/5820504.html

相关文章

探索数据存储的奥秘:深入理解B树与B+树

key value 类型的数据红黑树&#xff08;最优二叉树&#xff0c;内存最优&#xff09;&#xff0c;时间复杂度&#xff1a;O&#xff08;logn&#xff09;,调整方便&#xff1b;一个结点分出两个叉B树一个节点可以分出很多叉数据量相等的条件下&#xff1a;红黑树的层数很高&am…

selenium在Linux环境下截屏(save_screenshot)中文乱码的问题

在Linux环境下会browser.save_screenshot方法保存的图片中中文乱码&#xff0c;不便于排查问题&#xff0c;解决办法如下&#xff1a; 1、设置浏览器options选项 options.add_argument("--langzh-CN") # 设置语言为中文 2、安装中文字体 apt-get update apt-get in…

EFCore HasDefaultValueSql (续1 ValueGeneratedOnAdd)

前情&#xff1a;EFCore HasDefaultValueSql 小伙伴在使用 HasDefaultValueSql 时&#xff0c;对相关的 ValueGeneratedOnAdd 也有了疑问&#xff1a; ValueGeneratedOnAdd 和 HasDefaultValueSql 是 Entity Framework Core 中用于管理字段默认值的两种不同配置方式&#xff0…

1. 初识Scala

背景 Scala是为了解决Java在函数式编程、类型推断、模式匹配等方面的不足而诞生的。它提供了更简洁的语法、更强的类型系统和更丰富的函数式编程特性&#xff0c;使得开发者能够以更高效、更灵活的方式编写代码。在大数据框架spark中&#xff0c;大量使用了scala的语法&#x…

基于DFT与IIR-FIR滤波器的音频分析与噪声处理

基于DFT与IIR-FIR滤波器的音频分析与噪声处理 【完整源码文档报告】 【需要可随时联系博主&#xff0c;常在线能秒回!】 系统功能与实现介绍 功能与实现 音频处理系统界面搭建&#xff1a;利用MATLAB的GUI工具&#xff0c;构建了音频分析界面&#xff0c;包括文件导入、录…

React Error Boundary 错误边界限制

1. 基本概念 1.1 什么是 Error Boundary Error Boundary 是 React 16 引入的一个特性&#xff0c;它可以捕获子组件树中的 JavaScript 错误&#xff0c;记录错误并展示备用 UI&#xff0c;而不是让整个应用崩溃。大白话&#xff1a;嵌套组件某个组件出错时显示备用页面而非报…

S变换matlab实现

S变换函数 function [st,t,f] st(timeseries,minfreq,maxfreq,samplingrate,freqsamplingrate) % S变换 % Code by huasir Beijing 2025.1.10 % Reference is "Localization of the Complex Spectrum: The S Transform" % from IEEE Transactions on Signal Proc…

ISP架构方案

外置 ISP 架构 外置 ISP 架构是指在 AP 外部单独布置 ISP 芯片用于图像信号处理。外置 ISP 的架构图一般如下所示&#xff1a; 外置 ISP 架构的优点主要有&#xff1a; 能够提供更优秀的图像质量&#xff1a;在激烈的市场竞争下&#xff0c;能够存活到现在的外置 ISP 生产厂商在…