utils.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. export const formatTimestamp = t => { //时间戳格式化
  2. const date = new Date(t)
  3. const year = date.getFullYear()
  4. const month = date.getMonth() + 1
  5. const week = date.getDay()
  6. const day = date.getDate()
  7. const hour = date.getHours()
  8. const minutes = date.getMinutes()
  9. const second = date.getSeconds()
  10. let weekRes = ''
  11. switch (week) {
  12. case 0:
  13. weekRes = "星期日";
  14. break;
  15. case 1:
  16. weekRes = "星期一";
  17. break;
  18. case 2:
  19. weekRes = "星期二";
  20. break;
  21. case 3:
  22. weekRes = "星期三";
  23. break;
  24. case 4:
  25. weekRes = "星期四";
  26. break;
  27. case 5:
  28. weekRes = "星期五";
  29. break;
  30. case 6:
  31. weekRes = "星期六";
  32. }
  33. return [year, month, weekRes, day, hour, minutes, second]
  34. }
  35. export const numberToChinese = num => { //数字转汉字方法
  36. const chnNumChar = ["零","一","二","三","四","五","六","七","八","九"];
  37. const chnUnitSection = ["","万","亿","万亿","亿亿"];
  38. const chnUnitChar = ["","十","百","千"];
  39. const numToChn = num => {
  40. const index = num.toString().indexOf(".");
  41. if(index != -1){
  42. const str = num.toString().slice(index);
  43. let a = "点";
  44. for (let i = 1;i < str.length; i ++){
  45. a += chnNumChar[parseInt(str[i])];
  46. }
  47. return a ;
  48. }else{
  49. return '';
  50. }
  51. }
  52. //定义在每个小节的内部进行转化的方法,其他部分则与小节内部转化方法相同
  53. const sectionToChinese = section => {
  54. var str = '', chnstr = '',zero= false,count=0; //zero为是否进行补零, 第一次进行取余由于为个位数,默认不补零
  55. while(section>0){
  56. var v = section % 10; //对数字取余10,得到的数即为个位数
  57. if(v ==0){ //如果数字为零,则对字符串进行补零
  58. if(zero){
  59. zero = false; //如果遇到连续多次取余都是0,那么只需补一个零即可
  60. chnstr = chnNumChar[v] + chnstr;
  61. }
  62. }else{
  63. zero = true; //第一次取余之后,如果再次取余为零,则需要补零
  64. str = chnNumChar[v];
  65. str += chnUnitChar[count];
  66. chnstr = str + chnstr;
  67. }
  68. count++;
  69. section = Math.floor(section/10);
  70. }
  71. return chnstr;
  72. }
  73. const a = numToChn(num);
  74. num = Math.floor(num);
  75. let unitPos = 0;
  76. let strIns = '';
  77. let chnStr = '';
  78. let needZero = false;
  79. if(num === 0){
  80. return chnNumChar[0];
  81. }
  82. while(num > 0){
  83. let section = num % 10000;
  84. if(needZero){
  85. chnStr = chnNumChar[0] + chnStr;
  86. }
  87. strIns = sectionToChinese(section);
  88. strIns += (section !== 0) ? chnUnitSection[unitPos] : chnUnitSection[0];
  89. chnStr = strIns + chnStr;
  90. needZero = (section < 1000) && (section > 0);
  91. num = Math.floor(num / 10000);
  92. unitPos ++;
  93. }
  94. let result = chnStr + a;
  95. const temp = result.split('')
  96. if (temp[0] === '一' && temp[1] === '十') {
  97. temp.splice(0, 1)
  98. result= temp.join('')
  99. }
  100. return result ? result : ''
  101. }