知道一月中某天时间戳,获取该月1日至30日时间戳
function computeTime(time){
const y = new Date(time).getFullYear();
const m = new Date(time).getMonth()+1;
return [new Date(y, m - 1, 1).getTime(),new Date(y, m, 0).getTime()];
}
computeTime(time);
将时间戳转换为指定日期格式
function format(date,format){
let time;
if(date instanceof Date){
time = date;
}else{
time = new Date(date);
}
const o = {
'M+':time.getMonth()+1,
'd+':time.getDate(),
'h+':time.getHours(),
'm+':time.getMinutes(),
's+':time.getSeconds(),
'q+':Math.floor((time.getMonth()+3)/3),
S:time.getMilliseconds(),
};
if(/(y+)/.test(format)){
format = format.replace(RegExp.$1,(`${time.getFullYear()}`).substr(4-RegExp.$1.length));
}
for(const k in o){
if(new RegExp(`(${k})`).test(format)){
format = format.replace(RegExp.$1,RegExp.$1.length === 1 ? o[k] : (`00${o[k]}`).substr((`${o[k]}`).length));
}
}
return format;
}
let date = new Date().getTime();
console.log(date,format(date,'yyyy年MM月dd'))
金额格式转换(保留两位小数)
function computeMoney(money){
if(String(money).indexOf('.')>=0){
const fl = String(money).split('.')[1].length;
if(fl === 1){
return `${money}0`;
} else if(fl === 2) {
return `money`;
}
}else{
return `${money}.00`;
}
}
console.log(computeMoney(8.90))
浮点数精度问题(参数必须为number类型)
function precision(num1,num2) {
let t1,t2;
try{
t1 = String(num1).split('.')[1].length;
}catch(e){
t1 = 0;
}
try{
t2 = String(num2).split('.')[1].length;
}catch(e){
t2 = 0;
}
const m = 10 ** Math.max(t1,t2);
if (num1 > 0 && num2 > 0) {
return (m *num1 + m * num2) / m;
} else {
const n = t1 > t2 ? t1 : t2;
return ((m * num1 + m * num2)/m).toFixed(n);
}
}
console.log(precision(9999.20,45.80));