VueJS 将日期值设置为 Date 而不是 String
VueJS set date value as Date instead of String
我需要更改日期选择器值的类型,它应该 return 值作为日期类型而不是字符串 https://prnt.sc/r6vr3g。但我不知道我该怎么做。
谁能帮帮我?
代码如下:
<template>
<q-input
@focusin="onFocusIn"
:value="value"
@input="e => $emit('input', e.toString())"
@click="alert = true"
>
<q-dialog v-model="alert">
<q-date
:value="value" @input="onInput"
:mask="mask"
/>
</q-dialog>
<script>
import _ from 'lodash'
export default {
props: {
..props
},
data () {
return {
alert: false,
sValue: ''
}
},
..computed
methods: {
onInput (e) {
let dateObj = new Date(e)
this.$emit('input', dateObj)
this.alert = false
},
onFocusIn (e) {
e.target.blur()
}
}
}
</script>
<style type="text/css">
</style>
<div class="col">
<s-datetime-picker v-model="data.dateStart" label="Date Start" required />
{{ data.dateStart }}
</div>
这是日期选择器组件的代码,之后是使用该组件的示例。
我编辑了代码,因为我更改了组件。现在我有另一个错误,在输入字段中它显示消息 'Invalid Date' 并且在控制台中我收到此错误 "failed for prop "value”。预期字符串值为 "Invalid Date",得到日期“=13=]
在发射前格式化你的发射对象
<template>
<q-datetime-picker
..more properties
:value="value"
@input="formatDate(e)"
/>
</template>
<script>
import _ from 'lodash'
export default {
props: {
...all properties
},
computed: {
sLabel () {
if (!this.required || _.isUndefined(this.label)) return this.label
return this.label + ' *'
},
sRules () {
if (!this.required) return this.rules
let rule = val => { if (val.length === 0) return 'This field is Required' }
if (_.isUndefined(this.rules)) return [ rule ]
return (_.cloneDeep(this.rules)).push(rule)
}
},
formatDate(val){
let dateObj = new Date(val);
this.$emit('input', dateObj);
}
}
</script>
<style type="text/css">
</style>
<div class="col">
<s-datetime-picker v-model="data.dateStart" label="Date Start" required />
{{ data.dateStart }}
</div>
根据您的需要在 formatDate 函数中格式化您的日期。
希望对你有帮助,
只需将您获得的值作为字符串传递给 new Date
它将 return 一个日期对象。
var dt = "2020-02-13T00:00"; // <-- this is the value you get from date picker
var dtObj = new Date(dt); // <-- this one is date type
完整的 Vue 代码
<template>
<div id="app">
<input type="date" v-model="dateFromField">
<button :click="showDate()">Submit</button>
</div>
</template>
<script>
export default {
name: "App",
data: function() {
return {
dateFromField: Date
};
},
methods: {
showDate() {
console.log(this.dateFromField);
console.log(typeof this.dateFromField);
let newDate = new Date(this.dateFromField);
console.log("conversion");
console.log(newDate);
console.log(typeof newDate);
}
}
};
</script>
我需要更改日期选择器值的类型,它应该 return 值作为日期类型而不是字符串 https://prnt.sc/r6vr3g。但我不知道我该怎么做。 谁能帮帮我?
代码如下:
<template>
<q-input
@focusin="onFocusIn"
:value="value"
@input="e => $emit('input', e.toString())"
@click="alert = true"
>
<q-dialog v-model="alert">
<q-date
:value="value" @input="onInput"
:mask="mask"
/>
</q-dialog>
<script>
import _ from 'lodash'
export default {
props: {
..props
},
data () {
return {
alert: false,
sValue: ''
}
},
..computed
methods: {
onInput (e) {
let dateObj = new Date(e)
this.$emit('input', dateObj)
this.alert = false
},
onFocusIn (e) {
e.target.blur()
}
}
}
</script>
<style type="text/css">
</style>
<div class="col">
<s-datetime-picker v-model="data.dateStart" label="Date Start" required />
{{ data.dateStart }}
</div>
这是日期选择器组件的代码,之后是使用该组件的示例。
我编辑了代码,因为我更改了组件。现在我有另一个错误,在输入字段中它显示消息 'Invalid Date' 并且在控制台中我收到此错误 "failed for prop "value”。预期字符串值为 "Invalid Date",得到日期“=13=]
在发射前格式化你的发射对象
<template>
<q-datetime-picker
..more properties
:value="value"
@input="formatDate(e)"
/>
</template>
<script>
import _ from 'lodash'
export default {
props: {
...all properties
},
computed: {
sLabel () {
if (!this.required || _.isUndefined(this.label)) return this.label
return this.label + ' *'
},
sRules () {
if (!this.required) return this.rules
let rule = val => { if (val.length === 0) return 'This field is Required' }
if (_.isUndefined(this.rules)) return [ rule ]
return (_.cloneDeep(this.rules)).push(rule)
}
},
formatDate(val){
let dateObj = new Date(val);
this.$emit('input', dateObj);
}
}
</script>
<style type="text/css">
</style>
<div class="col">
<s-datetime-picker v-model="data.dateStart" label="Date Start" required />
{{ data.dateStart }}
</div>
根据您的需要在 formatDate 函数中格式化您的日期。 希望对你有帮助,
只需将您获得的值作为字符串传递给 new Date
它将 return 一个日期对象。
var dt = "2020-02-13T00:00"; // <-- this is the value you get from date picker
var dtObj = new Date(dt); // <-- this one is date type
完整的 Vue 代码
<template>
<div id="app">
<input type="date" v-model="dateFromField">
<button :click="showDate()">Submit</button>
</div>
</template>
<script>
export default {
name: "App",
data: function() {
return {
dateFromField: Date
};
},
methods: {
showDate() {
console.log(this.dateFromField);
console.log(typeof this.dateFromField);
let newDate = new Date(this.dateFromField);
console.log("conversion");
console.log(newDate);
console.log(typeof newDate);
}
}
};
</script>