Vue 时间转换

news2024/11/25 1:01:35

文章目录

  • 将秒转换成简单时间格式
    • 方式一 表格渲染
    • 方式二 js转换
  • 将时间转换为字符串
    • 方式一 年、月、日、时、分、秒、星期等信息
    • 方式二 返回多久之前的时间


将秒转换成简单时间格式

方式一 表格渲染

element-ui 表格为例,duration 单位为秒

<el-table-column v-if="columns.visible('duration')" prop="duration" label="时长" sortable="custom" :class-name="getSortClass('duration')">
  <template slot-scope="scope">
    <span>{{ (parseInt(scope.row.duration / 3600) &lt; 10 ? '0' + parseInt(scope.row.duration / 3600) : parseInt(scope.row.duration / 3600)) + ':' + (parseInt(scope.row.duration % 3600 / 60) &lt; 10 ? '0' + parseInt(scope.row.duration % 3600 / 60) : parseInt(scope.row.duration % 3600 / 60)) + ':' + (parseInt(scope.row.duration % 3600 % 60) &lt; 10 ? '0' + parseInt(scope.row.duration % 3600 % 60) : parseInt(scope.row.duration % 3600 % 60)) }}</span>
  </template>
</el-table-column>

方式二 js转换

js中处理转换, duration 单位为秒

const hour = parseInt(duration / 3600) < 10 ? '0' + parseInt(duration / 3600) : parseInt(duration / 3600)
const min = parseInt(duration % 3600 / 60) < 10 ? '0' + parseInt(duration % 3600 / 60) : parseInt(duration % 3600 / 60)
const sec = parseInt(duration % 3600 % 60) < 10 ? '0' + parseInt(duration % 3600 % 60) : parseInt(duration % 3600 % 60)
const time = hour + ':' + min + ':' + sec

效果如图:

秒转时间格式

将时间转换为字符串

方式一 年、月、日、时、分、秒、星期等信息

以下这个方法是用来将时间转换为字符串的。它接受两个参数:时间和格式。时间可以是对象、字符串或数字,格式是一个字符串。如果不传入格式,默认使用"{y}-{m}-{d} {h}:{i}:{s}"的格式。

首先,方法会判断传入的时间是否为空,如果是,则返回null。然后,根据时间的类型,将其转换为Date对象。接着,根据传入的格式,将日期对象中的年、月、日、时、分、秒、星期等信息替换到格式字符串中。最后,返回替换后的字符串。

可以根据需要修改time和option的值来获取不同格式的时间字符串。

例如,如果传入时间为"2021-01-01",格式为"{y}年{m}月{d}日",则返回"2021年01月01日"。

/**
 * Parse the time to string
 * @param {(Object|string|number)} time
 * @param {string} cFormat
 * @returns {string}
 */
export function parseTime(time, cFormat) {
  if (arguments.length === 0) {
    return null
  }
  const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
  let date
  if (typeof time === 'undefined' || time === null || time === 'null') {
    return ''
  } else if (typeof time === 'object') {
    date = time
  } else {
    if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
      time = parseInt(time)
    }
    if ((typeof time === 'number') && (time.toString().length === 10)) {
      time = time * 1000
    }
    date = new Date(time)
  }
  const formatObj = {
    y: date.getFullYear(),
    m: date.getMonth() + 1,
    d: date.getDate(),
    h: date.getHours(),
    i: date.getMinutes(),
    s: date.getSeconds(),
    a: date.getDay()
  }
  const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
    let value = formatObj[key]
    // Note: getDay() returns 0 on Sunday
    if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value ] }
    if (result.length > 0 && value < 10) {
      value = '0' + value
    }
    return value || 0
  })
  return time_str
}

使用示例:

import { parseTime } from '路径/parseTime.js'

const time = new Date() // 获取当前时间
const format = '{y}-{m}-{d} {h}:{i}:{s}' // 设置格式

const result = parseTime(time, format) // 调用方法

console.log(result) // 输出转换后的时间字符串

方式二 返回多久之前的时间

以下这个方法是用来将时间转换为字符串的。它接受两个参数:时间和选项。时间可以是一个数字,选项是一个字符串。如果时间是一个10位数的数字,方法会将其转换为毫秒级的时间戳。然后,根据当前时间和传入的时间计算时间差。根据时间差的大小,返回不同的字符串表示时间的方式。

例如,如果时间差小于30秒,则返回"刚刚";如果时间差小于1小时,则返回"X分钟前";如果时间差小于1天,则返回"X小时前";如果时间差小于2天,则返回"1天前"。如果传入了选项,则调用parseTime方法将时间转换为指定格式的字符串;否则,返回月、日、小时和分钟的字符串表示。

可以根据需要修改time和option的值来获取不同格式的时间字符串。

/**
 * @param {number} time
 * @param {string} option
 * @returns {string}
 */
export function formatTime(time, option) {
  if (('' + time).length === 10) {
    time = parseInt(time) * 1000
  } else {
    time = +time
  }
  const d = new Date(time)
  const now = Date.now()

  const diff = (now - d) / 1000

  if (diff < 30) {
    return '刚刚'
  } else if (diff < 3600) {
    // less 1 hour
    return Math.ceil(diff / 60) + '分钟前'
  } else if (diff < 3600 * 24) {
    return Math.ceil(diff / 3600) + '小时前'
  } else if (diff < 3600 * 24 * 2) {
    return '1天前'
  }
  if (option) {
    return parseTime(time, option)
  } else {
    return (
      d.getMonth() +
      1 +
      '月' +
      d.getDate() +
      '日' +
      d.getHours() +
      '时' +
      d.getMinutes() +
      '分'
    )
  }
}

使用示例:

import { formatTime } from '路径/formatTime.js'

const time = new Date() // 获取当前时间
const option = '{y}-{m}-{d} {h}:{i}:{s}' // 设置选项

const result = formatTime(time, option) // 调用方法

console.log(result) // 输出转换后的时间字符串

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/702915.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Openresty原理概念篇(十一) 为什么要避免使用 NYI?

一 JIT编译器的死穴&#xff1a;为什么要避免使用 NYI ? ① 问题引入 1) 那么到底有哪些操作可以被 JIT,哪些不能呢?2) 怎样才可以避免写出不能被 JIT 的代码呢? ② 上节回顾 ③ 什么是 NYI&#xff1f; NYI函数 NYI完整的列表 ④ NYI列表中string库函数 说明&am…

sonarqube安装以及jenkins集成sonarqube

一、sonarqube安装 docker方式安装sonarqube docker 方式安装是最简便的&#xff0c;我选择了这个安装方式 1、下载镜像 docker pull postgres:latest docker pull sonarqube2、 创建挂载目录 #用于postgres的挂载目录 mkdir -p /opt/postgres/postgresql mkdir -p /opt/po…

慧博云通加入飞桨技术伙伴计划,共同推动企业AI应用创新

近日&#xff0c;慧博云通子公司慧博云通&#xff08;上海&#xff09;软件技术有限公司正式加入飞桨技术伙伴计划&#xff0c;双方将共同探索人工智能多场景创新应用&#xff0c;为企业提供智能化解决方案。 慧博云通 慧博云通科技股份有限公司&#xff08;股票代码&#x…

Pytorch分布式训练(一)

参考文献&#xff1a; 33、完整讲解PyTorch多GPU分布式训练代码编写_哔哩哔哩_bilibili pytorch进程间通信 - 文举的博客 (liwenju0.com) 前言 2023年&#xff0c;训练模型时&#xff0c;使用DDP&#xff08;DistributedDataParallel&#xff09;已经成为Pytorch炼丹师的标准…

sourcetree打开就闪退

1、问题分析 一直未出现如题描述情况&#xff0c;今早到公司可能是异常重启或者系统更新的愿意导致没有正常关机&#xff0c;出现了此种情况 2、问题解决 注&#xff1a;本文sourcetree安装在win11系统&#xff0c;win10等系统目录大同小异 ① (若快捷方式在桌面步骤①省略…

你的服务器还安全吗?用户数据是否面临泄露风险?

一系列严重的网络安全事件引起了广泛关注&#xff0c;多家知名公司的服务器遭到黑客挟持&#xff0c;用户的个人数据和敏感信息面临泄露的风险。这些事件揭示了网络安全的脆弱性和黑客攻击的威胁性&#xff0c;提醒着企业和个人加强对网络安全的重视。 一、入侵案例1.1 蔚来数据…

复习Javascript第二章

JavaScript 函数 JavaScript 函数是被设计为执行特定任务的代码块。 JavaScript 函数会在某代码调用它时被执行。 function myFunction(p1, p2) {return p1 * p2; // 该函数返回 p1 和 p2 的乘积 } JavaScript 函数语法 JavaScript 函数通过 function 关键词…

爆款视频生成器小程序源码搭建方案

爆款视频生成器是一种可以帮助用户快速制作出高质量视频的工具。它可以根据用户提供的素材、模板和音乐等要素&#xff0c;自动生成一个精美的视频。这种工具可以大大节省用户的时间和精力&#xff0c;同时还能够提高视频制作的效率和质量&#xff0c;使视频更易于被观众接受和…

开发一个商城小程序有哪些功能?

✔️近年来&#xff0c;随着微信小程序的不断优化和推出&#xff0c;越来越多的商家开始选择使用小程序作为销售渠道。商城小程序作为一种便捷、快速、高效的销售渠道&#xff0c;已经成为商家们打造线上商城的重要手段。商城小程序拥有着丰富的功能&#xff0c;可以满足不同商…

使用itextpdf填充表单域并生成pdf

文章目录 前言一、准备工作1.1 安装软件1.2 准备pdf1.3 设置表单域 二、创建项目三、编写代码3.1 编写工具类3.2 测试 四、测试结果 前言 最近手上有个任务&#xff0c;就是需要做一个pdf导出的功能。 可选择的技术点比较多&#xff0c;我这边综合考虑之后&#xff0c;使用的…

品牌推广的新路径:邀请歌手出席活动的独特策略“

在当今的市场竞争中&#xff0c;品牌推广和市场营销已经成为企业取得成功的重要因素之一。而邀请知名歌手出席活动则是一种备受瞩目的策略&#xff0c;可以为品牌带来巨大的优势和机遇。无论是与赵丽颖、迪丽热巴、张子枫、关晓彤、周冬雨还是孙俪等知名歌手合作&#xff0c;都…

WPF中Binding的数据转换—ValueConverters

WPF中Binding的数据转换—ValueConverters 在WPF中使用Binding经常会遇到需要转换的情况&#xff0c;如bool转为visibility&#xff0c;通常情况需要自己写一个类继承自IValueConverter接口&#xff0c;使用详情请参见Binding对数据的转换和校验&#xff0c;这种方法虽然不难&…

C 模拟包装机

一种自动包装机的结构如图 1 所示。首先机器中有 N 条轨道&#xff0c;放置了一些物品。轨道下面有一个筐。当某条轨道的按钮被按下时&#xff0c;活塞向左推动&#xff0c;将轨道尽头的一件物品推落筐中。当 0 号按钮被按下时&#xff0c;机械手将抓取筐顶部的一件物品&#x…

中间件漏洞解析

服务器解析漏洞算是历史比较悠久了&#xff0c;但如今依然广泛存在。在此记录汇总一些常见服务器&#xff08;WEB server&#xff09;的解析漏洞&#xff0c;比如IIS6.0、IIS7.5、apache、nginx等 2|0 二、IIS5.x-6.x解析漏洞&#xff08;针对asa/asp/cer&#xff09; 2|11、打…

学习笔记|盘点一些Linux 常用的命令

目录 1、apt-get Debian/Ubuntu系统包管理器 2、uname 获取 操作系统信息 3、date 查看/设置 系统时间 4、yum CentOS系统包管理器 5、mkdir 新建 文件夹 6、free 查看内存使用信息 7、wget 下载工具 8、cd 进入 文件夹 8、cp 复制或重命名 文件/文件夹 9、VI、VIM …

机器学习之支持向量机(SVM)

1 支持向量机介绍 支持向量机&#xff08;support vector machine&#xff0c;SVM&#xff09;是有监督学习中最有影响力的机器学习算法之一&#xff0c;该算法的诞生可追溯至上世纪 60 年代&#xff0c; 前苏联学者 Vapnik 在解决模式识别问题时提出这种算法模型&#xff0c;…

synchronized监视器锁

1、synchronized&监视器锁 1.1 synchronized 介绍 在 Java 中&#xff0c;synchronized 是一种关键字&#xff0c;用于实现线程的同步和互斥控制。它可以修饰方法或代码块&#xff0c;用于保护共享资源的访问&#xff0c;避免多个线程同时修改数据而引发的并发问题。 具…

chatgpt赋能python:Python重写父类__init__方法的必要性与实现方法

Python重写父类__init__方法的必要性与实现方法 在Python中&#xff0c;一个类可以继承自另一个类&#xff0c;从而获得另一个类的属性和方法。当我们继承一个父类时&#xff0c;通常我们需要重写其中的一些方法&#xff0c;以满足我们自己的需求。在这篇文章中&#xff0c;我…

玩机搞机-----带你了解高通刷机平台中的一些选项释义 玩转平台

很多刷机工具玩家都使用过&#xff0c;但对于一些新手来说。有些选项所表达的意义不太了解&#xff0c;选择与否严重会导致机型固件刷完个别功能出现故障&#xff0c;今天的这个博文对有些刷机平台中的选项做个简单的说明。 一 小米刷机平台 MiFlash.截止目前最新的版本是2022…

最新|2024年QS世界大学排名前100榜单发布

6月28日世界高等教育研究机构Quacquarelli Symonds&#xff08;QS&#xff09;率先公布了2024年世界大学排名&#xff0c;本次QS排名因指标和权重的重大调整&#xff0c;导致排名发生较大变化。知识人网小编将新的评分标准及前100的大学榜单整理如下&#xff0c;供读者参考。 前…