vue中根据时间戳判断对应的时间(今天 昨天 前天)

下面是针对“vue中根据时间戳判断对应的时间(今天 昨天 前天)”的完整攻略。

1. 时间戳转换为日期

要想根据时间戳判断对应的时间,我们首先需要将时间戳转换为日期。JavaScript提供了Date()对象用于操作日期和时间。我们可以使用Date()对象和getTime()方法来将时间戳转换成日期对象。

举个例子,如果我们有一个时间戳变量timestamp,可以通过下面的代码将其转换为日期变量date

let timestamp = 1629849065000; // 时间戳
let date = new Date(timestamp); // 时间戳转日期

2. 将日期格式化为特定格式的字符串

将日期格式化为特定格式的字符串有很多种方法,可以使用原生的JavaScript方法,也可以使用开源库如moment.js。我们在这里介绍一种比较简单的方法,使用Date()对象的getYear()、getMonth()、getDay()、getHours()、getMinutes()和getSeconds()方法来获取年、月、日、时、分和秒数。然后,我们拼接这些信息来生成一个特定格式的字符串。

举个例子,以下代码根据现在的日期生成一个格式为“年-月-日 时:分:秒”的字符串:

let now = new Date();
let year = now.getYear() + 1900;
let month = now.getMonth() < 9 ? "0" + (now.getMonth() + 1) : now.getMonth() + 1;
let day = now.getDate() < 10 ? "0" + now.getDate() : now.getDate();
let hour = now.getHours() < 10 ? "0" + now.getHours() : now.getHours();
let minute = now.getMinutes() < 10 ? "0" + now.getMinutes() : now.getMinutes();
let second = now.getSeconds() < 10 ? "0" + now.getSeconds() : now.getSeconds();
let dateStr = year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second;

3. 判断对应的时间

有了日期变量,接下来我们就可以根据时间戳判断对应的时间了。我们假设现在有一个时间戳变量timestamp,以下是判断对应的时间的实现过程:

let timestamp = new Date().getTime(); // 获取当前时间戳
let now = new Date(); // 获取当前日期

// 获取和比较时间差
let diff = now.getTime() - timestamp;
let diffDays = Math.floor(diff / (24 * 60 * 60 * 1000));

// 根据时间差返回合适的时间文本
if (diffDays === 0) {
  // 在同一天
  let hour = timestamp.getHours() < 10 ? "0" + timestamp.getHours() : timestamp.getHours();
  let minute = timestamp.getMinutes() < 10 ? "0" + timestamp.getMinutes() : timestamp.getMinutes();
  let timeStr = hour + ":" + minute;
  return timeStr;
} else if (diffDays === 1) {
  // 昨天
  return "昨天";
} else if (diffDays === 2) {
  // 前天
  return "前天";
} else {
  // 更早时间,直接返回日期
  let year = timestamp.getFullYear();
  let month = timestamp.getMonth() < 9 ? "0" + (timestamp.getMonth() + 1) : timestamp.getMonth() + 1;
  let day = timestamp.getDate() < 10 ? "0" + timestamp.getDate() : timestamp.getDate();
  let dateStr = year + "-" + month + "-" + day;
  return dateStr;
}

4. 示例

示例1

以下是一个用Vue.js封装的时间组件,可以根据时间戳判断对应的时间:

<template>
  <div>
    {{ getTimeString(timestamp) }}
  </div>
</template>

<script>
export default {
  props: {
    timestamp: {
      type: Number,
      required: true
    }
  },
  methods: {
    getTimeString(timestamp) {
      let now = new Date(); // 获取当前日期

      // 获取和比较时间差
      let diff = now.getTime() - timestamp;
      let diffDays = Math.floor(diff / (24 * 60 * 60 * 1000));

      // 根据时间差返回合适的时间文本
      if (diffDays === 0) {
        // 在同一天
        let hour = timestamp.getHours() < 10 ? "0" + timestamp.getHours() : timestamp.getHours();
        let minute = timestamp.getMinutes() < 10 ? "0" + timestamp.getMinutes() : timestamp.getMinutes();
        let timeStr = hour + ":" + minute;
        return timeStr;
      } else if (diffDays === 1) {
        // 昨天
        return "昨天";
      } else if (diffDays === 2) {
        // 前天
        return "前天";
      } else {
        // 更早时间,直接返回日期
        let year = timestamp.getFullYear();
        let month = timestamp.getMonth() < 9 ? "0" + (timestamp.getMonth() + 1) : timestamp.getMonth() + 1;
        let day = timestamp.getDate() < 10 ? "0" + timestamp.getDate() : timestamp.getDate();
        let dateStr = year + "-" + month + "-" + day;
        return dateStr;
      }
    }
  }
};
</script>

示例2

以下是另一个用Vue.js封装的时间组件,在不同场景下可以显示不同的格式:

<template>
  <div>
    {{ getTimeString(timestamp, type) }}
  </div>
</template>

<script>
export default {
  props: {
    timestamp: {
      type: Number,
      required: true
    },
    type: {
      type: String,
      default: "default" // 可选值: default, short, full
    }
  },
  methods: {
    getTimeString(timestamp, type) {
      let now = new Date(); // 获取当前日期

      // 获取和比较时间差
      let diff = now.getTime() - timestamp;
      let diffDays = Math.floor(diff / (24 * 60 * 60 * 1000));

      // 根据时间差返回合适的时间文本
      if (type === "default") {
        // 默认格式,自动判断显示今天、昨天、前天或完整日期
        if (diffDays === 0) {
          // 在同一天
          let hour = timestamp.getHours() < 10 ? "0" + timestamp.getHours() : timestamp.getHours();
          let minute = timestamp.getMinutes() < 10 ? "0" + timestamp.getMinutes() : timestamp.getMinutes();
          let timeStr = hour + ":" + minute;
          return timeStr;
        } else if (diffDays === 1) {
          // 昨天
          return "昨天";
        } else if (diffDays === 2) {
          // 前天
          return "前天";
        } else {
          // 更早时间,直接返回日期
          let year = timestamp.getFullYear();
          let month = timestamp.getMonth() < 9 ? "0" + (timestamp.getMonth() + 1) : timestamp.getMonth() + 1;
          let day = timestamp.getDate() < 10 ? "0" + timestamp.getDate() : timestamp.getDate();
          let dateStr = year + "-" + month + "-" + day;
          return dateStr;
        }
      } else if (type === "short") {
        // 简短格式,只显示日期
        let year = timestamp.getFullYear();
        let month = timestamp.getMonth() < 9 ? "0" + (timestamp.getMonth() + 1) : timestamp.getMonth() + 1;
        let day = timestamp.getDate() < 10 ? "0" + timestamp.getDate() : timestamp.getDate();
        let dateStr = year + "-" + month + "-" + day;
        return dateStr;
      } else if (type === "full") {
        // 完整格式,显示日期和时间
        let year = timestamp.getFullYear();
        let month = timestamp.getMonth() < 9 ? "0" + (timestamp.getMonth() + 1) : timestamp.getMonth() + 1;
        let day = timestamp.getDate() < 10 ? "0" + timestamp.getDate() : timestamp.getDate();
        let hour = timestamp.getHours() < 10 ? "0" + timestamp.getHours() : timestamp.getHours();
        let minute = timestamp.getMinutes() < 10 ? "0" + timestamp.getMinutes() : timestamp.getMinutes();
        let second = timestamp.getSeconds() < 10 ? "0" + timestamp.getSeconds() : timestamp.getSeconds();
        let dateStr = year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second;
        return dateStr;
      }
    }
  }
};
</script>

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue中根据时间戳判断对应的时间(今天 昨天 前天) - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • JS实现鼠标拖拽盒子移动及右键点击盒子消失效果示例

    下面我将为你讲解JS实现鼠标拖拽盒子移动及右键点击盒子消失效果的完整攻略。 1. 鼠标拖拽盒子移动实现 首先,在HTML代码中准备一个盒子元素,例如: <div id="box"></div> 在CSS中为该盒子设置样式,使其成为一个带边框、背景色的方块: #box { width: 100px; height: …

    Vue 2023年5月28日
    00
  • uniapp引入模块化js文件和非模块化js文件的四种方式

    下面我将详细介绍 uniapp 引入模块化 js 文件和非模块化 js 文件的四种方式。 引入模块化 js 文件的方式 直接引入 可以通过 import 语句直接引入一个模块化 js 文件,如下所示: import {add, subtract} from ‘@/utils/calculate’; 其中 @ 表示项目根目录,calculate 是 utils…

    Vue 2023年5月27日
    00
  • Vue 用Vant实现时间选择器的示例代码

    请看以下详细讲解: Vue 用Vant实现时间选择器的示例代码 1. 安装 Vant 在项目中引入 Vant UI 库,可以通过npm进行安装: npm install vant -S 也可以从CDN方式引入,在HTML文件中添加以下代码: <!– 引入 Vant 样式文件 –> <link rel="stylesheet&q…

    Vue 2023年5月29日
    00
  • nodejs+koa2 实现模仿springMVC框架

    简介 首先,需要了解nodejs和koa2的概念和基础知识。1. nodejs:JavaScript运行时,是一种基于Chrome V8引擎的解释器,可以解析和执行JavaScript语法。2. koa2:Node.js的web框架,是Express的基础上重构的新一代web框架,强调“中间件”(middleware)概念,由于使用了ES6新增的async函…

    Vue 2023年5月28日
    00
  • vue实现下载文件流完整前后端代码

    下面是使用Vue实现下载文件流的前后端代码攻略。 前端代码 前端代码主要使用了Vue的axios库实现文件下载。示例如下: <template> <div> <button @click="downloadFile">下载文件</button> </div> </templ…

    Vue 2023年5月28日
    00
  • 理理Vue细节(推荐)

    理理Vue细节(推荐)攻略 为什么要学习Vue细节? Vue是现在流行的前端框架之一,Vue的易用性和灵活性深受前端开发者的喜爱。但是在使用Vue时,我们有时会遇到一些细节问题。这些细节问题对我们开发的影响很大,如果我们不能正确地解决这些问题,会导致代码出现Bug或性能问题,甚至是安全问题。因此,理解Vue的细节问题是非常必要的。 Vue细节攻略 1. v-…

    Vue 2023年5月27日
    00
  • mpvue小程序循环动画开启暂停的实现方法

    这里是使用mpvue实现小程序循环动画开启暂停的完整攻略。 1. 概述 小程序循环动画开启暂停的实现方法,有多种方案。而在使用mpvue框架时,可以直接使用wx.createAnimation创建动画并进行操作。具体实现步骤如下。 2. 实现步骤 2.1 创建动画 首先,我们需要创建动画。可以使用wx.createAnimation方法创建一个动画实例,代码…

    Vue 2023年5月27日
    00
  • Vue组件间通信方法总结(父子组件、兄弟组件及祖先后代组件间)

    Vue组件间通信方法总结 Vue组件通信是Vue开发者必须掌握的技能之一。本文将总结Vue中组件间通信的各种方法,包括父子组件、兄弟组件及祖先后代组件间通信。 父子组件通信 父子组件通信是Vue中最常见的通信方式。下面分别介绍组件间通信的几种方法。 Props 在Vue中父组件可以通过Props向子组件传递数据,子组件通过props选项接收父组件传递过来的数…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部