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

上代码:

  1. /**
  2. * @Desc: 时间处理工具
  3. * @Author: 拿饭盒当烟灰缸
  4. * @Date: 2018-02-27 15:42:44
  5. * @Last Modified time: 2018-02-28 15:21:33
  6. */
  7. /**
  8. * 根据时间格式,将数字格式的时间转换为格式字符串
  9. * @param {[type]} secondtime [description]
  10. * @param {[type]} formatString [description]
  11. * @return {[type]} [description]
  12. */
  13. const formatTime = (secondtime, formatString) => {
  14. formatString = formatString || 'DD days hh:mm:ss S'
  15. if (/SS+/.test(formatString)) {
  16. console.error('formatTime', '毫秒格式错误,不能有多个连续的S出现')
  17. return
  18. }
  19. let timeKey = [{
  20. name: 'day',
  21. regString: 'D+'
  22. }, {
  23. name: 'hour',
  24. regString: 'h+'
  25. }, {
  26. name: 'minute',
  27. regString: 'm+'
  28. }, {
  29. name: 'second',
  30. regString: 's+'
  31. }]
  32. if (!/S/.test(formatString)) {
  33. secondtime = Math.round(secondtime)
  34. }
  35. let timeNumbers = getTimeNumbers(secondtime)
  36. for (let i = 0, len = timeKey.length; i < len; i++) {
  37. formatString = formatString.replace(new RegExp(timeKey[i].regString), function (matchString, index, originalString) {
  38. return formatNumber(timeNumbers[timeKey[i].name], matchString.length)
  39. })
  40. }
  41. // 毫秒只支持3位模式
  42. formatString = formatString.replace(/S/, formatNumber(timeNumbers.milli, 3))
  43. return formatString
  44. }
  45. /**
  46. * 根据时间number获取小时,分钟,秒,毫秒数
  47. * @param {[type]} secondtime [description]
  48. * @return {[type]} [description]
  49. */
  50. const getTimeNumbers = (secondtime) => {
  51. // 转成字符串
  52. secondtime = secondtime.toFixed(3)
  53. // 从小数点切分
  54. let timeArray = secondtime.split('.')
  55. // 小数点后三位是毫秒部分
  56. let milliSecond = 0
  57. if (timeArray[1]) {
  58. milliSecond = Math.round(Number('0.' + timeArray[1]) * 1000)
  59. }
  60. // 分别获取时分秒
  61. let day = 0
  62. let hour = 0
  63. let minute = 0
  64. let second = 0
  65. // 一共多少秒
  66. let totalSeconds = Number(timeArray[0])
  67. // 几天
  68. day = Math.floor(totalSeconds / 3600 / 24)
  69. // 剩余秒数
  70. let dayRemain = totalSeconds % (3600 * 24)
  71. // 几个小时
  72. hour = Math.floor(dayRemain / 3600)
  73. // 剩余秒数
  74. let hourRemain = dayRemain % 3600
  75. // 几分钟
  76. minute = Math.floor(hourRemain / 60)
  77. // 剩余秒数
  78. second = hourRemain % 60
  79. let timeNumbers = {
  80. day: day,
  81. hour: hour,
  82. minute: minute,
  83. second: second,
  84. milli: milliSecond
  85. }
  86. return timeNumbers
  87. }
  88. /**
  89. * 数字格式化,在数字前边加0,补全到几位,比如输入1,3,则输出001
  90. * @param {[type]} number [description]
  91. * @param {[type]} n [description]
  92. * @return {[type]} [description]
  93. */
  94. const formatNumber = (number, n) => {
  95. n = n || 2
  96. number = number + ''
  97. let numberArray = number.split('')
  98. if (numberArray.length < n) {
  99. let len = n - numberArray.length
  100. for (let i = 0; i < len; i++) {
  101. numberArray.unshift('0')
  102. }
  103. }
  104. let res = numberArray.join('')
  105. return res
  106. }
  107. export {
  108. formatTime,
  109. getTimeNumbers,
  110. formatNumber
  111. }

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. 题解 【洛谷】AT654

    题解 AT654 [役人[错题已隐藏]] 此题题面没搬过来, 会日语的dalao可以自行去ATCoder查看. 给出此题的JavaAC代码: public class Main { public st ...

  2. 爬虫之scrapy简介

    原始的爬虫流程:效率低.同步.阻塞 scrapy执行流程:效率高.异步.非阻塞 scrapy的概念 scrapy是一个爬虫框架 开发速度快 稳定性高 性能优越 scrapy的流程 1. 爬虫模块(Sp ...

  3. [考试反思]0815NOIP模拟测试22

    40分,15名. 1-4:120 75 70 70 35分20名...总之差距极小不想说了 昨天教练说:以后的考试还是联赛知识点,但是难度比联赛高. 没听进去,以为是对于所有人而言的,也就是T1难度变 ...

  4. NOIP模拟 5

    考试的时候相当浮躁,而且脑子并不工作 T1看了几眼,觉得没思路,先skip T2一打眼,满足条件的最大值,二分!(然后就死了,根本没想有没有单调性) T3找了半天规律,一开始自己手模的K3都过不了样例 ...

  5. 深入了解 Java Resource && Spring Resource

    在Java中,为了从相对路径读取文件,经常会使用的方法便是: xxx.class.getResource(); xxx.class.getClassLoader().getResource(); 在S ...

  6. Java描述设计模式(17):调停者模式

    本文源码:GitHub·点这里 || GitEE·点这里 一.生活场景 1.场景描述 在公司的日常安排中,通常划分多个部门,每个部门又会分为不同的小组,部门经理的一项核心工作就是协调部门小组之间的工作 ...

  7. js中关于执行的顺序及变量存放方式的一点记录

    Markdown在线编辑器 - www.MdEditor.com 1 首先关于数据类型,有基本数据类型,和引用数据类型 基本数据类型有:number,string,boolean等:引用数据类型一般指 ...

  8. 用Java实现简单的区块链

    用 Java 实现简单的区块链 1. 概述 本文中,我们将学习区块链技术的基本概念.也将根据概念使用 Java 来实现一个基本的应用程序. 进一步,我们将讨论一些先进的概念以及该技术的实际应用. 2. ...

  9. day5-列表专区

    list 列表.类li = [1, 12, 9, "age", ["88", ["19", 10], "方法"], &q ...

  10. 构建大型 Vue.js 项目的10条建议

    下面是我在开发大型 Vue 项目时的最佳实践.这些技巧将帮助你开发更高效.更易于维护和共享的代码. 今年做自由职业的时候,我有机会开发了一些大型 Vue 应用程序.我所说的这些项目,Vuex stor ...