date - 表排序日期不正确

标签 date vue.js vuetify.js

预期: 我将从返回的 API 中获取日期时间字符串。此值 "2019-08-15T15:58:14.597Z" 应在表格中显示为 `DD-MM-YYYY HH:MM。 Vuetify 自带数据表组件,可以对数据进行升序和降序排序。我还想对日期使用此功能,使其按升序和降序排序。

小问题:来自 API 的日期应该保存并以另一种“样式”显示在表格中,但排序功能使用真实的日期对象。

我当前的代码:

<template>
    <v-content class="mt-12 ml-12">
        <h1 class="font-weight-black display-3">Servers</h1>

        <v-data-table
            class="elevation-1"
            :headers="headers"
            :items="columns"
            :items-per-page="15"
        >
        </v-data-table>

        <ul id="example-1">
            <li v-for="(data, index) in columns.data" :key="index">
                {{ data.attributes }}
            </li>
        </ul>
    </v-content>
</template>

<script>
import instances from '../services/instances';

export default {
  data() {
    return {
      columns: [],
      headers: [
        { text: 'Server Name', value: 'attributes.name' },
        { text: 'Spieler', value: 'attributes.playerCount' },
        { text: 'Avg. FPS', value: 'attributes.details.rust_fps_avg' },
        { text: 'Wiped', value: 'attributes.details.rust_last_wipe' },
      ],
    };
  },
  async created() {
    const { data } = await instances.createInstance();
    this.columns = data.data;
    this.columns.forEach((entry) => {
      const { players, maxPlayers } = entry.attributes;
      entry.attributes.playerCount = `${players} / ${maxPlayers}`;
      const { rust_last_wipe } = entry.attributes.details;
      const mmmm = new Date(entry.attributes.details.rust_last_wipe);
      entry.attributes.details.rust_last_wipe = `${mmmm.getDate()}.${mmmm.getMonth() + 1}.${mmmm.getFullYear()}`;
    });
    console.log(this.columns);
  },
};
</script>

最佳答案

this documentation有一种方法可以自定义列内容

基于它我们可以做:

<template>
  <v-content class="mt-12 ml-12">
    <h1 class="font-weight-black display-3">Servers</h1>

    <v-data-table
      class="elevation-1"
      :headers="headers"
      :items="columns"
      :items-per-page="15"
    >
      <template v-slot:item.attributes.details.rust_last_wipe="{ item }">
        <span>{{ item.attributes.details.rust_last_wipe_formatted }}</span>
      </template>
    </v-data-table>

    <ul id="example-1">
      <li v-for="(data, index) in columns.data" :key="index">
        {{ data.attributes }}
      </li>
    </ul>
  </v-content>
</template>

<script>
import instances from '../services/instances'

export default {
  data() {
    return {
      columns: [],
      headers: [
        { text: 'Server Name', value: 'attributes.name' },
        { text: 'Spieler', value: 'attributes.playerCount' },
        { text: 'Avg. FPS', value: 'attributes.details.rust_fps_avg' },
        { text: 'Wiped', value: 'attributes.details.rust_last_wipe' }
      ]
    }
  },
  async created() {
    const { data } = await instances.createInstance()
    this.columns = data.data
    this.columns.forEach(entry => {
      const { players, maxPlayers } = entry.attributes
      entry.attributes.playerCount = `${players} / ${maxPlayers}`
      const { rust_last_wipe } = entry.attributes.details
      const mmmm = new Date(entry.attributes.details.rust_last_wipe)
      entry.attributes.details.rust_last_wipe_formatted = `${mmmm.getDate()}.${mmmm.getMonth() + 1}.${mmmm.getFullYear()}`
    })
    console.log(this.columns)
  }
}
</script>

关于date - 表排序日期不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57608865/

相关文章:

php - 如何过滤MySQL日期?

php - 按上个月、上周、昨天等查询

vue.js - 我在使用带有 Electron 的vue js的 bundle 时遇到问题

html - 如何使用连接到容器的向下箭头创建渐变 css

php - date_default_timezone_set 产生奇怪的结果,是什么给出的?

sql - 如何根据与先前日期相关的条件按日期找出不同的人数?

vue.js - 有没有办法在 Vue 3 Composition API 中的随机组件之间共享 react 数据?

css - 如何设置组件最大高度?

javascript - Vuetify 如何模糊、聚焦点击的碎片?

vue.js - v-autocomplete 并将用户输入设置为其值