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>