javascript实用Date工具
时间字符串和年月日数据之间的自由转换工具: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工具的更多相关文章
- JavaScript实用的工具/类库
Moment.js//JavaScript日期处理类库. Lodash.js//非常实用的工具库. MD5//加密. Numeral.js//格式化和数字四则运算. Pure.css//CSS模块.
- Lodash JavaScript 实用工具库
地址:https://www.lodashjs.com/ Lodash 是一个一致性.模块化.高性能的 JavaScript 实用工具库.
- JavaScript 相关的工具代码
博客地址:https://ainyi.com/49 记录一些数据处理需要的方法工具代码 持续更新中... 时间戳转与日期格式相互转换 时间戳转换成日期格式 function timestampToTi ...
- ESLint – 可扩展的 JavaScript & JSX 校验工具
ESLint 是一个开源的 JavaScript 代码校验工具,最初是由 Nicholas C. Zakas 在2013年创建的.经常被用来发现问题的模式或代码,不符合特定的风格准则. ESLint ...
- Javascript开发之工具归纳
写在前面 由于JS开发对我来说是全新的技术栈,开发过程中遇到了各种各样的框架.工具,同时也感叹一下相对于.Net的框架(工具框架以及测试框架等)JS框架真的是太丰富了.社区的力量果然强大---也是由此 ...
- 推荐几个对Asp.Net开发者比较实用的工具
推荐几个对Asp.Net开发者比较实用的工具.大家有相关工具也可以在评论区留言,一起努力学习. 工具 1.Visual stdio Productivity Power tool:visual std ...
- OS X 平台的 8 个实用终端工具
本文由 伯乐在线 - shinancao 翻译自 mitchchn.欢迎加入iOS小组.转载请参见文章末尾处的要求. OS X 终端对外开放了许多很强大的UNIX实用工具和脚本.如果你是从Linux转 ...
- javascript实用技巧、javascript高级技巧
字号+作者:H5之家 来源:H5之家 2016-10-31 11:00 我要评论( ) 三零网提供网络编程. JavaScript 的技术文章javascript实用技巧.javascript高级技巧 ...
- ANDROID开发实用小工具
分享一些 Android开发中的实用小工具,你有发现好工具吗? 来这里分享一下呗 一.find bugs 静态检查工具 http://findbugs.sourceforge.net/ FindBug ...
随机推荐
- [考试反思]1003csp-s模拟测试58:沉淀
稳住阵脚. 还可以. 至少想拿到的分都拿到了,最后一题的确因为不会按秩合并和线段树分治而想不出来. 对拍了,暴力都拍了.挺稳的. 但是其实也有波折,险些被卡内存. 如果内存使用不连续或申请的内存全部使 ...
- [考试反思]0903NOIP模拟测试36:复始
因为多次被说颓博客时间太长于是 真香 恢复粘排行榜的传统. 大体上就是,T1A的前三,剩下的T2A的排名,再然后按照T3暴力得分排名. T1是个暴力.3个A的5个得分的.数据点极强爆零率极高. 我的思 ...
- [考试反思]0812NOIP模拟测试18:稀释
[]200 [4]190[5]180 [6]170[7]150 [11]140[16]130[19]120[24]100 有些事情,看淡了,也就简单了. 连续爆炸之后,没什么感觉了. 把态度放正,把结 ...
- Python文字转换语音,让你的文字会「说话」,抠脚大汉秒变撒娇萌妹
作者 | pk 哥 来源公众号 | Python知识圈(ID:PythonCircle) APP 也有文字转换为语音的功能,虽然听起来很别扭,但是基本能解决长辈们看不清文字或者眼睛疲劳,通过文字转换为 ...
- 七月月赛T1
题目背景 借助反作弊系统,一些在月赛有抄袭作弊行为的选手被抓出来了! 题目描述 现有 2^n\times 2^n (n\le10)2n×2n(n≤10) 名作弊者站成一个正方形方阵等候 kkksc03 ...
- PTA刷题记录(3)
团队天梯赛-------(3)分值:15 给定一个 k 位整数 N=dk−110k−1+⋯+d1101+d0 (0≤di≤9, i=0,⋯,k−1, dk−1 ...
- Mybatis自定义TypeHandler解决特殊类型转换问题
我们知道,Java和MySQL中的数据类型是不同的,Java中除了基本数据类型,还有对象. 有时候使用MySQL存储数据,或者从MySQL中读取数据时,会有一些特殊需求
- (C#)WPF:Grid面板介绍
Grid:网格面板 Grid和其他各个Panel比较起来,功能最多也最为复杂.要使用Grid,首先要向RowDefinitions和ColumnDefinitions属性中添加一定数量的RowDefi ...
- [error] hadoop:ls: `.': No such file or directory
问题: 解决: https://stackoverflow.com/questions/28241251/hadoop-fs-ls-results-in-no-such-file-or-directo ...
- VS Code 中使用 GitHub pull request 插件提交代码
VS Code作为一个代码编辑器,受到很多人的喜爱:其中有很多非常有用的插件/扩展功能,也会极大的提高我们的工作效率. 这里介绍一下GitHub pull request,用来向GitHub提交在VS ...