解决 parseInt()的神秘行为:parseInt(0.0000005) => 5
parseInt()是JavaScript的内置函数,用于解析数字字符串中的整数。
parseInt()的神秘行为
parseInt()的第一个参数如果不是字符串,将执行ToString操作,将其转换为字符串,然后再将该字符串解析为整数值
parseInt(0.5); // => 0 => '0.5'
parseInt(0.05); // => 0 => '0.05'
parseInt(0.005); // => 0 => '0.005'
parseInt(0.0005); // => 0 => '0.0005'
parseInt(0.00005); // => 0 => '0.00005'
parseInt(0.000005); // => 0 => '0.000005'
parseInt(0.0000005); // => 5 => '5e-7'
因为parseInt()总是将其第一个参数转换为字符串,所以小于10 -6的浮点数将以指数表示法编写。然后parseInt()从float的指数表示法中提取整数!
获取当月有几周以及日期
// now_month: 2022-01
export function allWeeks(now_month) {
let week_array = [];
let today = new Date(Date.parse(now_month));
let year = today.getFullYear();
let month = today.getMonth();
let i = 0;
let start = new Date(year, month, 1); // 得到当月第一天
let end = new Date(year, month + 1, 0); // 得到当月最后一天
let start_day = start.getDay(); // 当月第一天是周几
// 从当月的星期一到星期天(可 下周)
// switch (start_day) {
// case 0:
// i = 2;
// break;
// case 1:
// i = 1;
// break;
// case 2:
// i = 7;
// break;
// case 3:
// i = 6;
// break;
// case 4:
// i = 5;
// break;
// case 5:
// i = 4;
// break;
// case 6:
// i = 3;
// break;
// }
// while (new Date(year, month, i) <= end) {
// week_array.push([
// formatDate(new Date(year, month, i)),
// formatDate(new Date(year, month, i + 6)),
// ]);
// i += 7;
// }
// return week_array;
// 从当月的1号(不管是星期几) 到当月的最后一天
switch (start_day) {
case 0:
i = 0 - 5;
break;
case 1:
i = 1;
break;
case 2:
i = 0;
break;
case 3:
i = 0 - 1;
break;
case 4:
i = 0 - 2;
break;
case 5:
i = 0 - 3;
break;
case 6:
i = 0 - 4;
break;
}
while (new Date(year, month, i + 6) <= end) {
if (new Date(year, month, i) > start) {
week_array.push([
formatDate(new Date(year, month, i)),
formatDate(new Date(year, month, i + 6))
]);
} else {
week_array.push([
formatDate(start),
formatDate(new Date(year, month, i + 6))
]);
}
i += 7;
if (new Date(year, month, i + 6) > end) {
week_array.push([
formatDate(new Date(year, month, i)),
formatDate(end)
]);
}
}
week_array = week_array.filter(v => {
return v[0] <= v[1]
})
return week_array;
}
// 格式化date
function formatDate(date) {
date = new Date(date);
var y = date.getFullYear();
var m = date.getMonth() + 1;
m = m < 10 ? "0" + m : m;
var d = date.getDate();
d = d < 10 ? "0" + d : d;
return y + "." + m + "." + d;
}
获取两个日期之间的所有日期
export function getAllDate(begin, end) {
var arr1 = begin.split(".");
var arr2 = end.split(".");
var arr1_ = new Date();
var arrTime = [];
arr1_.setUTCFullYear(arr1[0], arr1[1] - 1, arr1[2]);
var arr2_ = new Date();
arr2_.setUTCFullYear(arr2[0], arr2[1] - 1, arr2[2]);
var unixDb = arr1_.getTime();
var unixDe = arr2_.getTime();
for (let i = unixDb; i <= unixDe; ) {
arrTime.push(datetimeparse(i, "YYYY/MM/DD"));
i = i + 24 * 60 * 60 * 1000;
}
return arrTime;
}
// 获取两个日期之间的所有日期
function datetimeparse(timestamp, format, prefix) {
if (typeof timestamp == "string") {
timestamp = Number(timestamp);
}
//转换时区
let currentZoneTime = new Date(timestamp);
let currentTimestamp = currentZoneTime.getTime();
let offsetZone = currentZoneTime.getTimezoneOffset() / 60; //如果offsetZone>0是西区,西区晚
let offset = null;
//客户端时间与服务器时间保持一致,固定北京时间东八区。
offset = offsetZone + 8;
currentTimestamp = currentTimestamp + offset * 3600 * 1000;
let newtimestamp = null;
if (currentTimestamp) {
if (currentTimestamp.toString().length === 13) {
newtimestamp = currentTimestamp.toString();
} else if (currentTimestamp.toString().length === 10) {
newtimestamp = currentTimestamp + "000";
} else {
newtimestamp = null;
}
} else {
newtimestamp = null;
}
let dateobj = newtimestamp
? new Date(parseInt(newtimestamp))
: new Date();
let YYYY = dateobj.getFullYear();
let MM =
dateobj.getMonth() > 8
? dateobj.getMonth() + 1
: "0" + (dateobj.getMonth() + 1);
let DD =
dateobj.getDate() > 9 ? dateobj.getDate() : "0" + dateobj.getDate();
let HH =
dateobj.getHours() > 9 ? dateobj.getHours() : "0" + dateobj.getHours();
let mm =
dateobj.getMinutes() > 9
? dateobj.getMinutes()
: "0" + dateobj.getMinutes();
let ss =
dateobj.getSeconds() > 9
? dateobj.getSeconds()
: "0" + dateobj.getSeconds();
let output = "";
let separator = "/";
if (format) {
separator = format.match(/-/) ? "-" : "/";
output += format.match(/yy/i) ? YYYY : "";
output += format.match(/MM/)
? (output.length ? separator : "") + MM
: "";
output += format.match(/dd/i)
? (output.length ? separator : "") + DD
: "";
output += format.match(/hh/i) ? (output.length ? " " : "") + HH : "";
output += format.match(/mm/) ? (output.length ? ":" : "") + mm : "";
output += format.match(/ss/i) ? (output.length ? ":" : "") + ss : "";
} else {
output += YYYY + separator + MM + separator + DD;
}
output = prefix ? prefix + output : output;
return newtimestamp ? output : "";
}
大屏自适应
https://blog.csdn.net/weixin_44533589/article/details/120409419?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2aggregatepagefirst_rank_ecpm_v1~rank_v31_ecpm-2-120409419.pc_agg_new_rank&utm_term=vue%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96%E5%A4%A7%E5%B1%8F%E8%87%AA%E9%80%82%E5%BA%94&spm=1000.2123.3001.4430