Vue 时间格式转换

文章目录

  • 将秒转换成简单时间格式
    • 方式一 表格渲染
    • 方式二 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 dateif (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 Sundayif (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) / 1000if (diff < 30) {return '刚刚'} else if (diff < 3600) {// less 1 hourreturn 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.hqwc.cn/news/4898.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Css设置border从中间向两边的颜色渐进效果

Css设置border从中间向两边的颜色渐进效果 .list-item {border-bottom: 1rpx solid;border-image: linear-gradient(to right, rgba(0,0,0,.1) 0%, rgba(81, 110, 197, 0.76) 50%, rgba(0,0,0,.1) 100%) 1;}效果如图&#xff1a;

5.MySQL索引事务

文章目录 &#x1f43e;1. 索引&#x1f43e;&#x1f490;1.1 概念&#x1f490;&#x1f338;1.2 作用与缺点&#x1f338;&#x1f337;1.2.1作用&#x1f337;&#x1f340;1.2.2缺点&#x1f340; &#x1f339;1.3 使用场景&#x1f339;&#x1f33b;1.4 使用&#x1f3…

新项目即将启动!小灰做个市场调研

熟悉小灰的小伙伴们都知道&#xff0c;在2019年初&#xff0c;做了整整10年程序员的小灰离开职场&#xff0c;成为了一名自由职业者。 2021年末&#xff0c;小灰注册了自己的公司&#xff0c;名为北京小灰大黄科技有限公司。 公司虽然注册了&#xff0c;但是整个公司只有小灰一…

Java注解

一、什么是注解 注解是放在Java源码的类、字段、方法、参数前的一种特殊的“注释”&#xff0c;和普通注释的区别是&#xff0c;普通注释被编译器直接忽略&#xff0c;注解则可以被编译器打包进入Class文件。如下图所示就是lombok中的一些注解。 注解的作用&#xff1a; 从JVM角…

ResizeKit.NET 自动更改所有控件和字体大小 -Crack Version

ResizeKit2.NET ---Added support for Microsoft .NET 7.0. 使您的应用程序大小和分辨率独立。 ResizeKit.NET 自动更改所有控件和字体的大小&#xff0c;以便它们可以显示在任何大小的表单上。提供完全控制来自定义调整大小过程。即使用户在运行应用程序时切换表单的大小&…

计算物理专题:傅里叶变换与快速傅里叶变换

计算物理专题&#xff1a;傅里叶变换与快速傅里叶变换 傅里叶变换提供一个全新的角度去观察和描述问题&#xff0c;如在量子力学中&#xff0c;动量与坐标表象之间的变换就是傅里叶变换。傅里叶变换同意可以用在数据处理等领域。1965年&#xff0c;Cooley 和 Tukey 提出了快速傅…

WPF中的Behavior及Behavior在MVVM模式下的应用

WPF中的Behavior及Behavior在MVVM模式下的应用 在WPF中&#xff0c;Behaviors&#xff08;行为&#xff09;是一种可重用的组件&#xff0c;可以附加到任何UI元素上&#xff0c;以添加特定的交互行为或功能。Behaviors可以通过附加属性或附加行为的方式来实现。 Behavior并不…

大厂月入3w+,失业焦虑折磨着我

大家好&#xff0c;这里是程序员晚枫&#xff0c;小红书也叫这个名字。 周末和一位老朋友聚会&#xff0c;聊了聊一个很现实的收入问题&#xff0c;巧合的是&#xff1a;他的焦虑&#xff0c;竟然和月薪5k的我一模一样。 今天给大家分享一下。 1、外人看来&#xff0c;让人羡…

在 Linux 中配置 IPv4 和 IPv6 地址详解

概要 IPv4和IPv6是Internet上常用的两种IP地址协议。在Linux系统中&#xff0c;您可以通过配置网络接口来设置IPv4和IPv6地址。本文将详细介绍如何在Linux中配置IPv4和IPv6地址。 步骤 1&#xff1a;确定网络接口 在开始配置IP地址之前&#xff0c;您需要确定要配置的网络接口…

吴恩达ChatGPT《LangChain for LLM Application Development》笔记

基于 LangChain 的 LLM 应用开发 1. 介绍 现在&#xff0c;使用 Prompt 可以快速开发一个应用程序&#xff0c;但是一个应用程序可能需要多次写Prompt&#xff0c;并对 LLM 的输出结果进行解析。因此&#xff0c;需要编写很多胶水代码。 Harrison Chase 创建的 LangChain 框…

初步认识Java垃圾回收算法

GCRoot指被栈上直接或间接引用的对象&#xff0c;或被本地方法栈直接或间接引用的对象&#xff0c;或被方法区引用的对象。 被引用的对象是不能被删除的。 如果对象跟GCRoot并没有直接或间接相连的关系&#xff0c;那么这些对象就可以被删除了。 标记-清理&#xff1a;将需要删…

基于FPGA的RC滤波器设计实现

目录 简介&#xff1a; 传递函数 FPGA代码实现 总结 简介&#xff1a; RC滤波器的特性基本情况介绍 RC一阶低通滤波介绍&#xff1b;RC滤波器电路简单&#xff0c;抗干扰性强&#xff0c;有较好的低频性能&#xff0c;并且选用标准的阻容元件易得&#xff0c;所以在工程测…