Element UI日期选择器默认显示1970年解决方案

目录

问题背景

问题根源

1. 数据绑定类型错误

 2. 初始化逻辑错误

 解决方案

核心思路

 步骤 1:正确初始化日期对象

步骤 2:处理数据交互

 步骤 3:处理年份切换事件

完整代码示例

注意事项

 1. 时区问题

 2. 格式化绑定值

常见问题

1. 为什么用 `Date` 对象而不是字符串?

 2. 如何设置默认值?

3. 数据请求不更新?

总结


问题背景

在使用 Element UI 的日期选择器组件 `<el-date-picker>` 时,开发者可能会遇到一个看似奇怪的现象:**日期控件默认显示1970年**,而不是预期的当前年份。例如,当设置 `type="year"` 用于选择年份时,控件初始化后默认选中1970年,用户需要手动切换才能选择正确的年份,这显然不符合常规需求。

问题根源

1. 数据绑定类型错误


Element UI 的 `<el-date-picker>` 组件的 `v-model` **期望绑定一个合法的日期对象(`Date`)或时间戳**。如果直接绑定一个纯数字(如 `2023`),组件会将其解析为从 **1970年1月1日(UTC时间)** 开始计算的毫秒数。例如:
- `v-model="2023"` 会被解析为 `2023ms`,对应的时间是 `1970-01-01T00:00:02.023Z`,因此年份显示为1970。

 2. 初始化逻辑错误


以下是一个典型的错误代码示例:

data() {return {year: new Date().getFullYear() // 返回数字,如 2023};
}


这里直接将年份数字绑定到组件,导致解析错误。

 解决方案

核心思路


确保 `v-model` 绑定的值是一个合法的日期对象(`Date`),而非纯数字或字符串年份。

 步骤 1:正确初始化日期对象


将 `year` 的初始值设置为当前时间的 `Date` 对象:

data() {return {year: new Date() // 正确:绑定日期对象};
}

步骤 2:处理数据交互


如果后端接口需要数字类型的年份,可以通过 `getFullYear()` 方法从日期对象中提取:

// 提交数据时转换
const selectedYear = this.year.getFullYear(); // 获取数字年份,如 2023

 步骤 3:处理年份切换事件


为 `<el-date-picker>` 添加 `@change` 事件,实现年份切换时自动更新数据:

<el-date-pickerv-model="year"type="year"placeholder="选择年"@change="handleYearChange" <!-- 监听年份变化 -->
/>
methods: {handleYearChange() {this.loadData(); // 重新加载数据或更新图表},async loadData() {const year = this.year.getFullYear();const response = await fetchData(year); // 调用接口获取数据this.updateChart(response.data);}
}

完整代码示例

<template><div><el-date-pickerv-model="year"type="year"placeholder="选择年"@change="handleYearChange"/><!-- 其他依赖年份数据的组件 --></div>
</template><script>
export default {data() {return {year: new Date() // 正确初始化};},methods: {handleYearChange() {this.loadChartData();},async loadChartData() {const currentYear = this.year.getFullYear();const data = await this.$api.getChartData(currentYear);this.renderChart(data);}}
};
</script>

注意事项

 1. 时区问题


- `new Date()` 返回的是浏览器本地时间的日期对象,确保后端接口和前端时区一致。
- 如果需要UTC时间,使用 `new Date(Date.UTC(year, 0, 1))` 构造日期。

 2. 格式化绑定值


如果希望 `v-model` 直接绑定字符串格式的年份(如 `"2023"`),可使用 `value-format`:

<el-date-pickerv-model="year"type="year"value-format="yyyy" <!-- 绑定值格式化为字符串 -->@change="handleYearChange"
/>


此时初始化值应为:

data() {return {year: new Date().getFullYear().toString() // "2023"};
}

常见问题

1. 为什么用 `Date` 对象而不是字符串?


Element UI 的日期组件内部依赖日期对象进行解析和格式化,直接使用字符串或数字可能导致意外行为。

 2. 如何设置默认值?

  • 当前年份:`year: new Date()`
  • 指定年份:`year: new Date(2020, 0, 1)`(注意月份从0开始)

3. 数据请求不更新?


确保在 `@change` 事件中重新触发数据加载逻辑,并销毁旧图表实例(如果使用 ECharts 等库)。

总结

通过绑定 `Date` 对象而非数字、正确处理数据转换和事件监听,可以彻底解决 Element UI 日期选择器默认显示1970年的问题。关键在于理解组件的数据格式要求,并遵循以下原则:

  1. 初始化时使用日期对象。
  2. 交互时提取年份数字。
  3. 动态切换时刷新数据。

正确实现后的效果:日期选择器默认显示当前年份,切换年份时数据动态更新,用户体验流畅。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/70512.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

kafka-保姆级配置说明(producer)

配置说明的最后一部分&#xff1b; ##指定kafka集群的列表&#xff0c;以“,”分割&#xff0c;格式&#xff1a;“host:port,host:port” ##此列表用于producer&#xff08;consumer&#xff09;初始化连接使用&#xff0c;server列表可以为kafka集群的子集 ##通过此servers列…

.NET周刊【2月第2期 2025-02-09】

国内文章 开箱即用的.NET MAUI组件库 V-Control 发布了! https://www.cnblogs.com/jevonsflash/p/18701494 文章介绍了V-Control&#xff0c;一个适用于.NET MAUI的组件库。作者计划将其开源&#xff0c;强调.NET MAUI是生产力强的跨平台移动开发工具。V-Control提供多种组件…

PHP2(WEB)

##解题思路 打开页面什么线索都没有&#xff0c;目录扫描只是扫出来一个index.php&#xff0c;而源代码没有东西&#xff0c;且/robots.txt是不允许访问的 于是一番查询后发现&#xff0c;有个index.phps的文件路径&#xff0c;里头写着一段php的逻辑&#xff0c;对url的id参数…

VisActor/VTable - 快速搭建表格

VTable源于VisActor体系&#xff0c;该体系是从字节跳动大量可视化场景沉淀而来&#xff0c;旨在提供面向叙事的智能可视化解决方案。VisActor包括渲染引擎、可视化语法、数据分析组件、图表组件、表格组件、GIS组件、图可视化组件、智能组件等多个模块&#xff0c;以及周边生态…

c++第一课(基础c)

目录 1.开场白 2.char&#xff08;字符&#xff09; 3.字符数组 4.ASCII码 1.开场白 OK&#xff0c;咱们也是亿&#xff08;不是作者故意的&#xff09;天没见&#xff0c;话不多说&#xff0c;直接开始&#xff01; 2.char&#xff08;字符&#xff09; 众所不周知&…

2025年02月21日Github流行趋势

项目名称&#xff1a;source-sdk-2013 项目地址url&#xff1a;https://github.com/ValveSoftware/source-sdk-2013项目语言&#xff1a;C历史star数&#xff1a;7343今日star数&#xff1a;929项目维护者&#xff1a;JoeLudwig, jorgenpt, narendraumate, sortie, alanedwarde…

【简单】209.长度最小的子数组

题目描述 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl1, …, numsr-1, numsr] &#xff0c;并返回其长度。如果不存在符合条件的子数组&#xff0c;返回0。 示例 1&#xff1a; 输入&am…

【STM32】内存管理

【STM32】内存管理 文章目录 【STM32】内存管理1、内存管理简介疑问&#xff1a;为啥不用标准的 C 库自带的内存管理算法&#xff1f;2、分块式内存管理&#xff08;掌握&#xff09;分配方向分配原理释放原理分块内存管理 管理内存情况 3、内存管理使用&#xff08;掌握&#…

Linux 命令大全完整版(14)

5. 文件管理命令 chgrp(change group) 功能说明&#xff1a;变更文件或目录的所属群组。语  法&#xff1a;chgrp [-cfhRv][–help][–version][所属群组][文件或目录…] 或 chgrp [-cfhRv][–help][–version][–reference<参考文件或目录>][文件或目录…]补充说明&…

[数据结构]顺序表详解

目录 一.线性表 二.顺序表 2.1概念及结构 1. 静态顺序表&#xff1a;使用定长数组存储元素。 2. 动态顺序表&#xff1a;使用动态开辟的数组存储。 2.1按需申请 2.2 接口实现&#xff1a;增删查改 SeqList.h: SeqList.c: test.c 一.线性表 线性表 &#xff08; line…

綫性與非綫性泛函分析與應用_2.賦范向量空間-母本

第2章 賦范向量空間 1.向量空間;哈默爾基;向量空間的維數 - 定義與性質 - 向量空間的定義:設\mathbb{K}為數域,集合X是\mathbb{K}上的向量空間,若在X上定義了加法(x,y)\in X\times X\to x + y\in X和數乘(\alpha,x)\in\mathbb{K}\times X\to\alpha x\in X兩種運算,且滿足…

2025年- G17-Lc91-409.最长回文-java版

1.题目描述 2.思路 思路1: 判断一个字符串中的字母个数是否是偶数个。 遍历字符串&#xff0c;检查每个字符是否是字母&#xff08;可以通过 Character.isLetter() 来判断&#xff09;。 累加字母的个数。 最后判断字母的个数是否是偶数。 思路2: 这段 Java 代码的作用是 统…

SpringBoot+Mybatis-Plus实现动态数据源

目录 一、前言二、代码实现1&#xff09;工程结构2&#xff09;相关依赖3&#xff09;数据源拦截切面4&#xff09;动态数据源切换5&#xff09;核心配置类6&#xff09;使用 三、原理分析1&#xff09;mapper接口注入流程2&#xff09;动态数据源切换执行流程 四、声明式事务导…

玩转 Java 与 Python 交互,JEP 库来助力

文章目录 玩转 Java 与 Python 交互&#xff0c;JEP 库来助力一、背景介绍二、JEP 库是什么&#xff1f;三、如何安装 JEP 库&#xff1f;四、JEP 库的简单使用方法五、JEP 库的实际应用场景场景 1&#xff1a;数据处理场景 2&#xff1a;机器学习场景 3&#xff1a;科学计算场…

Qt常用控件之日历QCalendarWidget

日历QCalendarWidget QCalendarWidget 是一个日历控件。 QCalendarWidget属性 属性说明selectDate当前选中日期。minimumDate最小日期。maximumDate最大日期。firstDayOfWeek设置每周的第一天是周几&#xff08;影响日历的第一列是周几&#xff09;。gridVisible是否显示日历…

三数之和:经典问题的多种优化策略

三数之和&#xff1a;经典问题的多种优化策略 大家好&#xff0c;我是Echo_Wish。今天我们来聊一个经典的算法问题——三数之和&#xff08;3Sum&#xff09;。它是许多面试和算法竞赛中常见的问题之一&#xff0c;也常常考察我们对算法优化的理解和技巧。我们不仅要解决问题&…

Go 语言中的协程

概念 Go语言中的协程&#xff08;Goroutine&#xff09;是一种由Go运行时管理的轻量级线程。它是Go语言并发模型的核心&#xff0c;旨在通过简单、易用的方式支持高并发的程序设计。 创建协程 协程的创建非常简单&#xff0c;只需要使用go关键字&#xff0c;后面跟着一个函数…

JAVA最新版本详细安装教程(附安装包)

目录 文章自述 一、JAVA下载 二、JAVA安装 1.首先在D盘创建【java/jdk-23】文件夹 2.把下载的压缩包移动到【jdk-23】文件夹内&#xff0c;右键点击【解压到当前文件夹】 3.如图解压会有【jdk-23.0.1】文件 4.右键桌面此电脑&#xff0c;点击【属性】 5.下滑滚动条&…

基于javaweb的SpringBoot个人博客系统设计和实现(源码+文档+部署讲解)

技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…

三、linux字符驱动详解

在上一节完成NFS开发环境的搭建后&#xff0c;本节将探讨Linux字符设备驱动的开发。字符设备驱动作为Linux内核的重要组成部分&#xff0c;主要负责管理与字符设备&#xff08;如串口、键盘等&#xff09;的交互&#xff0c;并为用户空间程序提供统一的读写操作接口。 驱动代码…