logo

哈达波斯网|专注网站

脚本

工具代码、小技巧

脚本  2019/2/18 9:35:09  管理员  

记录一些数据处理需要的方法工具代码

将时间戳转换成日期格式

function timestampToTime (timestamp) {
  let date = new Date(timestamp * 1000);//时间戳为10位需*1000,时间戳为13位的话不需乘1000
  let Y = date.getFullYear() + '-';
  let M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-';
  let D = (date.getDate()+1 < 10 ? '0'+date.getDate() : date.getDate()) + ' ';
  let h = (date.getHours()+1 < 10 ? '0'+date.getHours() : date.getHours()) + ':';
  let m = (date.getMinutes()+1 < 10 ? '0'+date.getMinutes() : date.getMinutes()) + ':';
  let s = (date.getSeconds()+1 < 10 ? '0'+date.getSeconds() : date.getSeconds());
  return Y+M+D+h+m+s;
}

将日期格式转换成时间戳

let date = new Date('2014-04-23 18:55:49:123');
// 有三种方式获取
let time1 = date.getTime();
let time2 = date.valueOf();
let time3 = Date.parse(date);
console.log(time1); // 1398250549123
console.log(time2); // 1398250549123
console.log(time3); // 1398250549000

获取 24 小时制的时间

当前 toLocaleTimeString 方法只能获取到 12 小时制的时间(‘上午09:10:01’ | ‘下午08:10:24’)

这里给出 js 获取 24 小时制的时间

var myDate = new Date()
console.log(myDate.toLocaleTimeString('chinese', {hour12: false}));

间歇调用和超时调用

setInterval()、setTimeout()

首先两个方法都会返回一个调用 ID,该 ID 表示当前的定时器,可用于将来取消该定时器的调用

var timeoutId = setTimeout(()=>{}, 1000);
var intervalId = setInterval(()=>{}, 1000);

clearTimeout(timeoutId);
clearInterval(intervalId);

使用普通 setInterval

let num = 0;
let max = 10;
let intervalId = null;
function incrementNumber () {
  num++;
  // 如果执行次数达到了 max 设定的值,则取消尚未执行的调用
  if (num === max) {
    clearInterval(intervalId);
    alert('Done');
  }
}
// 追踪调用 ID,用于取消定时器
intervalId = setInterval(incrementNumber, 500);

使用 setTimeout 代替 setInterval

let num = 0;
let max = 10;
function incrementNumber () {
  num++;
  // 如果执行次数没有达到 max 设定的值,则就设置另外一次超时调用
  if (num < max) {
    setTimeout(incrementNumber, 500);
  } else {
    alert('Done');
  }
}
setTimeout(incrementNumber, 500);

可见,在使用超时调用 setTimeout 代替 setInterval 时,没有必要追踪调用 ID,因为在每次执行代码之后,如果不在设置另一次超时调用,调用就会自动停止

一般认为,使用 setTimeout 代替 setInterval 是一种最佳的间歇调用模式,在开发环境下,很少真正使用 setInterval,原因是后一个间歇调用可能会在前一个间歇调用结束之前启动。而使用 setTimeout 代替 setInterval,完全可以避免这一点

所以最好使用 setTimeout 代替 setInterval


小技巧

&& 运算符

true && 12 // 返回 12
false && 12 // 返回 false


|| 运算符

false || 12 // 返回 12
true || 12 // 返回 true


= 是赋值、引用,永远不会被复制

let sto = {};
let x = sto;
x.name = 'krry';
let nick = sto.name; // krry
// x 只是引用了 sto 对象地址,所以 sto.name 也是 'krry'

// 下面 a、b、c 每个都引用一个不同的空对象
let a = {};
let b = {};
let c = {};

// 下面 a、b、c 都引用同一个空对象,当其中一个对象发生变化,其他对象也会随着变化
a = b = c = {};


以下输出 1 3

if([]==false){console.log(1)}; // true  []==false
if({}==false){console.log(2)}; // false
if([]){console.log(3)} // true
if([1]==[1]){console.log(4)} // 地址不一样


记住:

[] == false; // 表达式为 true
[] !== false; // 表达式为 true

// 但是
if ([]) { // 可以进入
  console.log(2); // 是可以打印的
};

if ({}) { // 可以进入
  console.log(2); // 是可以打印的
};

温馨提示

看到上面 == 和 === 的区别是不是很容易搞乱,所以啊,实际开发中,尽量避免使用 ==
要用就用全等 ===

本文由 Krry 创作

网站首页  | 最新公告  | 漏洞修补  | 网站模板  | 知识文档  | 与我联系
Copyright © 2015 jlasp.com All Rights Reserved.
哈达波斯网|专注网站 版权所有
地址:吉林省吉林市昌邑区 联系QQ:383612004 联系人:董先生
未经本站授权,禁止复制或建立镜像,内容仅用于学习参考!
ICP备案号:吉ICP备15000891号-1 | 

吉公网安备 22020202000301号