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;
}
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
返回一个新的字符串,内容为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。