时间字符串和年月日数据之间的自由转换工具:2018年更新版

上代码:

/**
* @Desc: 时间处理工具
* @Author: 拿饭盒当烟灰缸
* @Date: 2018-02-27 15:42:44
* @Last Modified time: 2018-02-28 15:21:33
*/ /**
* 根据时间格式,将数字格式的时间转换为格式字符串
* @param {[type]} secondtime [description]
* @param {[type]} formatString [description]
* @return {[type]} [description]
*/
const formatTime = (secondtime, formatString) => {
formatString = formatString || 'DD days hh:mm:ss S'
if (/SS+/.test(formatString)) {
console.error('formatTime', '毫秒格式错误,不能有多个连续的S出现')
return
} let timeKey = [{
name: 'day',
regString: 'D+'
}, {
name: 'hour',
regString: 'h+'
}, {
name: 'minute',
regString: 'm+'
}, {
name: 'second',
regString: 's+'
}] if (!/S/.test(formatString)) {
secondtime = Math.round(secondtime)
} let timeNumbers = getTimeNumbers(secondtime) for (let i = 0, len = timeKey.length; i < len; i++) {
formatString = formatString.replace(new RegExp(timeKey[i].regString), function (matchString, index, originalString) {
return formatNumber(timeNumbers[timeKey[i].name], matchString.length)
})
} // 毫秒只支持3位模式
formatString = formatString.replace(/S/, formatNumber(timeNumbers.milli, 3))
return formatString
} /**
* 根据时间number获取小时,分钟,秒,毫秒数
* @param {[type]} secondtime [description]
* @return {[type]} [description]
*/
const getTimeNumbers = (secondtime) => {
// 转成字符串
secondtime = secondtime.toFixed(3)
// 从小数点切分
let timeArray = secondtime.split('.')
// 小数点后三位是毫秒部分
let milliSecond = 0
if (timeArray[1]) {
milliSecond = Math.round(Number('0.' + timeArray[1]) * 1000)
}
// 分别获取时分秒
let day = 0
let hour = 0
let minute = 0
let second = 0
// 一共多少秒
let totalSeconds = Number(timeArray[0])
// 几天
day = Math.floor(totalSeconds / 3600 / 24)
// 剩余秒数
let dayRemain = totalSeconds % (3600 * 24)
// 几个小时
hour = Math.floor(dayRemain / 3600)
// 剩余秒数
let hourRemain = dayRemain % 3600
// 几分钟
minute = Math.floor(hourRemain / 60)
// 剩余秒数
second = hourRemain % 60 let timeNumbers = {
day: day,
hour: hour,
minute: minute,
second: second,
milli: milliSecond
} return timeNumbers
} /**
* 数字格式化,在数字前边加0,补全到几位,比如输入1,3,则输出001
* @param {[type]} number [description]
* @param {[type]} n [description]
* @return {[type]} [description]
*/
const formatNumber = (number, n) => {
n = n || 2
number = number + ''
let numberArray = number.split('')
if (numberArray.length < n) {
let len = n - numberArray.length
for (let i = 0; i < len; i++) {
numberArray.unshift('0')
}
}
let res = numberArray.join('')
return res
} export {
formatTime,
getTimeNumbers,
formatNumber
}

javascript实用Date工具的更多相关文章

  1. JavaScript实用的工具/类库

    Moment.js//JavaScript日期处理类库. Lodash.js//非常实用的工具库. MD5//加密. Numeral.js//格式化和数字四则运算. Pure.css//CSS模块.

  2. Lodash JavaScript 实用工具库

    地址:https://www.lodashjs.com/ Lodash 是一个一致性.模块化.高性能的 JavaScript 实用工具库.

  3. JavaScript 相关的工具代码

    博客地址:https://ainyi.com/49 记录一些数据处理需要的方法工具代码 持续更新中... 时间戳转与日期格式相互转换 时间戳转换成日期格式 function timestampToTi ...

  4. ESLint – 可扩展的 JavaScript & JSX 校验工具

    ESLint 是一个开源的 JavaScript 代码校验工具,最初是由 Nicholas C. Zakas 在2013年创建的.经常被用来发现问题的模式或代码,不符合特定的风格准则. ESLint ...

  5. Javascript开发之工具归纳

    写在前面 由于JS开发对我来说是全新的技术栈,开发过程中遇到了各种各样的框架.工具,同时也感叹一下相对于.Net的框架(工具框架以及测试框架等)JS框架真的是太丰富了.社区的力量果然强大---也是由此 ...

  6. 推荐几个对Asp.Net开发者比较实用的工具

    推荐几个对Asp.Net开发者比较实用的工具.大家有相关工具也可以在评论区留言,一起努力学习. 工具 1.Visual stdio Productivity Power tool:visual std ...

  7. OS X 平台的 8 个实用终端工具

    本文由 伯乐在线 - shinancao 翻译自 mitchchn.欢迎加入iOS小组.转载请参见文章末尾处的要求. OS X 终端对外开放了许多很强大的UNIX实用工具和脚本.如果你是从Linux转 ...

  8. javascript实用技巧、javascript高级技巧

    字号+作者:H5之家 来源:H5之家 2016-10-31 11:00 我要评论( ) 三零网提供网络编程. JavaScript 的技术文章javascript实用技巧.javascript高级技巧 ...

  9. ANDROID开发实用小工具

    分享一些 Android开发中的实用小工具,你有发现好工具吗? 来这里分享一下呗 一.find bugs 静态检查工具 http://findbugs.sourceforge.net/ FindBug ...

随机推荐

  1. [考试反思]1029csp-s模拟测试92:弱智

    我只能这么评价我自己. 看这个提交时间...我没话可说... T1半个世界都A了还是切不掉.又一次挂细节. T2不会证明的乱搞(虽然可以证明)A了没什么可说的算是水过. T3之前水过的题(打的次正解) ...

  2. [考试反思]1002csp-s模拟测试57:平庸

    一天两场,感觉要完. 不粘排行榜,太壮观了. #1:190 #2:180 #4:160 #35:150 #37:140 #39:120 #kx:20呃... 最后一个是考试结束后了. 又是CE盖40分 ...

  3. [无用]LNC李纳川的日常NC操作

    NC说他从不CE NC说他想明白了 表示嘲讽. 好吧好吧其实还是有一个美好的结局的. 虽说我在嘲讽他,但我并不会做TAT 大神吹牛没毛病,我个蒟蒻还是老老实实刷水题吧.

  4. NOIP模拟测试12

    T1 斐波那契 一道找规律题,被我做成了贼难的题. 观察图片可知x=f[i-1]+j.(j为x的父亲)且j<=f[i-1],然后就二分找父亲没了. #include<bits/stdc++ ...

  5. P3043 [USACO12JAN]牛联盟(并查集+数学)

    (m<n<=1e5,有重边) 题目表述有问题..... 给定一张图(不一定联通),每条边可以选择连接的两个点之一,剩余的点可以自己成对,问方案数. 一开始是真的被吓到了....觉得可写性极 ...

  6. 大数据之路day02_1--运算符

    运算符这一节主要是介绍算数运算符.赋值运算符.比较运算符.逻辑运算符.三元运算符.接下来一一介绍. 1.算数运算符 ++ 和 -- 的用法 例如:a++ 和 ++a的区别 %的应用场景(取模其实就是取 ...

  7. 深入理解计算机系统 第十章 系统级I/O

    很多高级语言都提供了执行 I/O 的较高级别的函数.为什么我们还要学习 Unix I/O? 原因:1.由于 I/O 和其他系统概念之间有循环依赖关系,故了解 Unix I/O 将帮助我们理解其他的系统 ...

  8. 浅析ORACLE中NVL/NVL2/DECODE/CASE WHEN的用法

    使用NVL的时候只能对值进行是否为空的判断,基本语法是NVL( 值1, ,结果2).它的功能是如果值1为空,则此函数返回结果2,不为空的话直接输出值1(如果两个参数都为空,那么还是返回空): NVL2 ...

  9. Linux从git上下东西

    git clone 网址 git clone https://github.com/walkor/Workerman

  10. CSS复合选择器是什么?复合选择器是如何工作

    复合选择器介绍 复合选择器其实很好理解,说白了就跟我们生活中的有血缘关系家庭成员一样,通过标签或者class属性或id属性,去找对应的有血缘关系的某个选择器,具体的大家往下看哦. 如果是初学者对基本的 ...