今天学到了一个小技巧,和大家分享一下。
我们常常会遇到时间字符串的各种转换,麻烦的很。但是如果你对String对象的各个方法都能熟练掌握的话,这些都是小菜一碟。
我今天遇到的问题是如何给数字前补0,比如你要得到的是2016-07-30,而你获取的却是2016-7-30,这就有点小尴尬,要做到转化方法有如下两个:
方法一
/**
* 将形如yyyy-m-d的字符串转化为yyyy-mm-dd格式的
* @param {Object} yyyy-m-d
*/
var changeStr = function(str){
var year = str.substring(0,4);
var month = str.substring(str.indexOf('-') + 1, str.lastIndexOf('-'));
var day = str.substring(str.lastIndexOf('-') + 1);
return year + '-'
+ (month < 10 ? '0' + month : month) + '-'
+ (day < 10 ? '0' + day : day);
}
console.log(changeStr('2016-7-5'));// 2016-07-05
方法二
/**
* 将形如yyyy-m-d的字符串转化为yyyy-mm-dd格式的
* @param {Object} yyyy-m-d
*/
var changeStr = function(str){
var year = str.substring(0,4);
var month = str.substring(str.indexOf('-') + 1, str.lastIndexOf('-'));
var day = str.substring(str.lastIndexOf('-') + 1);
return year + '-'
+ ('0' + month).slice(-2) + '-'
+ ('0' + day).slice(-2);
}
console.log(changeStr('2016-7-5'));// 2016-07-05
个人感觉方法二比较好一些。