el‐data‐picker - daniel-qa/Vue GitHub Wiki
日期选择器需要一个日期值(null 或日期字符串/对象),而 0 是一个数字,与日期类型不匹配。
所以将 new_msg_send 初始化为 ref(0),要直接绑定到 el-date-picker ,需要做轉換為時間截記
<template>
<div>
<el-date-picker
v-model="dateValue"
type="date"
placeholder="选择日期"
@change="updateMessage"
/>
<p>您选择的日期是:{{ dateValue }}</p>
<p>存储的消息是:{{ new_msg_send }}</p>
</div>
</template>
<script setup>
import { ref } from 'vue';
// 用于绑定日期选择器的值
const dateValue = ref(null);
// 初始化为 0 的变量,用于存储处理后的日期
const new_msg_send = ref(0);
// 更新 new_msg_send 的方法
const updateMessage = (date) => {
new_msg_send.value = date ? new Date(date).getTime() : 0; // 将日期转换为时间戳存储
};
</script>
<style scoped>
/* 可选样式 */
</style>
- 將 Date 轉換時間截記方法 Timestamp 的作法
// 更新 new_msg_send 的方法
const updateMessage = (date) => {
new_msg_send.value = date ? new Date(date).getTime() : 0; // 将日期转换为时间戳存储
};
- 將 timestamp 轉為 DataType
// 初始化 dateValue,如果 new_msg_send 不为 0,则设置 dateValue
onMounted(() => {
if (new_msg_send.value !== 0) {
// 将时间戳转为日期对象,并赋值给 dateValue
dateValue.value = new Date(new_msg_send.value);
}
});
<template>
<div>
<el-date-picker
v-model="selectedDate"
type="date"
placeholder="选择日期"
@change="updateMessage"
/>
<p>您选择的日期是:{{ selectedDate }}</p>
<p>存储的消息是:{{ new_msg_send }}</p>
</div>
</template>
<script setup>
import { ref } from 'vue';
// 定义变量
const selectedDate = ref(null); // 日期绑定的变量
const new_msg_send = ref(0); // 用于存储的变量
// 更新消息的方法
const updateMessage = (date) => {
new_msg_send.value = date; // 将选择的日期存储到 new_msg_send 中
};
</script>
1 . 将 new_msg_send 定义为 ref,以便动态更新值。
2 . 使用 @change 事件监听日期变化,每次用户选择日期时调用 updateMessage 方法,将日期值存入 new_msg_send。
3 . 页面上会显示用户选择的日期和存储的消息。
这样你就可以动态存储并显示日期了!
// Timestamp 轉成 年月日時分
const formatDate = (date) => {
if (!date) return ''; // 确保 date 有值
const parsedDate = new Date(date); // 确保是 Date 类型
if (isNaN(parsedDate)) return ''; // 如果日期无效,返回空字符串
const year = parsedDate.getFullYear();
const month = String(parsedDate.getMonth() + 1).padStart(2, '0'); // 月份从 0 开始
const hours = String(parsedDate.getHours()).padStart(2, '0');
const minutes = String(parsedDate.getMinutes()).padStart(2, '0');
return `${year}-${month} ${hours}:${minutes}`;
};