JS中 时分秒补零的几种方法

时分秒补零的几种方法

  • 使用padStart(2,“0”);
  • 使用slice(-2);
  • 使用if语句条件判断;
  • 使用三目运算符;
 function getDateString(date) {
            var year = date.getFullYear().toString().padStart(4, "0");
            var month = (date.getMonth() + 1).toString().padStart(2, "0");
            var day = date.getDate().toString().padStart(2, "0");

            var hour = date.getHours().toString().padStart(2, "0");
            var minute = date.getMinutes().toString().padStart(2, "0");
            var second = date.getSeconds().toString().padStart(2, "0");
            return `${year}- ${month}-${day} ${hour}:${minute}:${second}`;
        }
        console.log(getDateString(new Date()));
       

var hour = ('0' + date.getHours()).slice(-2);
var hour = date.getHours() < 10 ? ('0' + date.getHours()) : date.getHours();
用这两句代码替换,能得到同样的补零效果。

if语句,类似于三目运算符,只是写成函数形式,如下:

function add0(time){
   if(time<10){
         time = ""+"0"+time;
    }
   return time;
  }

padStart() padEnd()

Es2017 引入了字符串补全长度的功能,如果某个字符串不够指定长度,会在头部或尾部补全。padStart() 用于头部补全,padEnd() 用于尾部补全。

'x'.padStart(5, 'st') // 'ststx'
'x'.padStart(4, 'st') // 'stsx'

padStart() 和 padEnd() 一共接受两个参数,第一是字符串补全生效的最大长度,第二个参数是用来补全的字符串。
如果原字符串的长度,等于或大于最大长度,则字符串补全不生效,返回原字符串。
'xxx'.padStart(2,'s'); // 'xxx'

如果用来补全的字符串与原字符串,两者的长度之和超过了最大长度,则会截取超出位数的补全字符串。

'abc'.padStart(10,'123456789');
// '1234567abc'

如果省略掉第二个参数,默认使用空格补全长度。
'x'.padStart(4); // ' x'

padStart() 的常用用途是为数值补全指定位数。下面代码生成 10 位数值字符串。

 '1'.padStart(10, '0')  // 0000000001
'12'.padStart(10, '0') // 0000000012 

另一个用途是提示字符串格式。

'12'.padStart(10, 'YYYY-MM-DD') // YYYY-MM-12
'09-12'.padStart(10, 'YYYY-MM-DD') // YYYY-09-12

String.prototype.slice()方法

返回一个新的字符串,内容为str的一个切片或子串。

语法

str.slice(begin, end);
参数

begin:切片开始的字符索引。如果为负,则将从该字符串的尾部开始计算,即-1表示最后一个字符。

end:切片结束的字符索引。如果不指定,则切片将包含从start到字符串结尾的所有字符。如果为负,则将从该字符串的尾部开始计算,即-1表示最后一个字符。

返回值

一个新的字符串,内容为str中自begin位置开始到end(不含)位置的所有字符。

示例1:常规调用

var str = "abcdefg";
str.slice(-1);    // "g"
str.slice(0);     // "abcdefg";
str.slice(1);     // "bcdefg"
str.slice(1, 3);  // "bc"
str.slice(1, -3); // "bcd"

示例2:当begin大于等于end时,或begin大于字符串长度时

var str = "abcdefg";
str.slice(2, 2);  // ""
str.slice(3, 2);  // ""
str.slice(30);    // ""
str.slice(9, 10); // ""

当begin大于等于end时,或begin大于字符串长度时,返回空字符串。

示例3:当参数为NaN时

var str = "abcdefg";
str.slice(NaN);    // "abcdefg"
str,slice(NaN, 2); // "ab"
str.slice(2, NaN); // ""
str.slice(NaN, NaN); // ""

当参数为NaN时,会被解析为0。

示例4:当传入非数值参数时

var str = "abcdefg";
str.slice([]);      // "abcdefg"
str.slice([2]);     // "cdefg"
str.slice({}, [2]); // "ab"

当传入非数值参数时,会被隐式转为数值类型,如果无法转换为数值,则最终会被替换为0。

String.prototype.slice方法和substring方法都是返回一个字符串的指定部分,不同之处在于slice方法允许负参数值,而传给substring的负参数值会被修正为0。

你可能感兴趣的:(JS中 时分秒补零的几种方法)