nodejs实践录:nodejs代码知识片段积累

本文记录一些nodejs常用的小知识点,有部分是代码片段。

判断“非空”

如果某变量为undefined、null、false,可直接用if来判断。示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 以下if语句中的打印信息均不输出
var dd = undefined
if (dd)
{
log.info('dd: ', dd);
}
var bb = null;
if (bb)
{
log.info('bb: ', bb);
}
var cc = false;
if (cc)
{
log.info('c: ', cc);
}

数字转字符串

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// 数字转字符串,如不足len位,补0,如:
// number2String(9, 2) --> 09
function number2String(num, len) {
var numAsString = num.toString();
while (numAsString.length < len) {
numAsString = '0' + numAsString;
}
return numAsString;
}

// 数字按十六进制转字符串,如不足len位,补0,如:
// number2String(16, 2) --> 10
function number2HexString(num, len) {
var numAsString = num.toString(16);
while (numAsString.length < len) {
numAsString = '0' + numAsString;
}
return numAsString;
}

日期时间相关

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
//将日期转换为指定的格式,fmt示例:yyyy-MM-dd hh:mm:ss或yyyyMMdd
function getFormatTime(fmt,time){
if(time === undefined)
{
time = new Date();
}
var o = {
"M+" : time.getMonth()+1, //月份
"d+" : time.getDate(), //日
"h+" : time.getHours(), //小时
"m+" : time.getMinutes(), //分
"s+" : time.getSeconds(), //秒
"S" : time.getMilliseconds() //毫秒
};
if(/(y+)/.test(fmt))
{
fmt=fmt.replace(RegExp.$1, (time.getFullYear()+"").substr(4 - RegExp.$1.length));
}
for(var k in o) {
if(new RegExp("("+ k +")").test(fmt)){
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
}
}
return fmt;
}

// 获取当前时间戳
// 示例:[2019-02-28 12:54:07.544]
function getTimestamp() {
var now = new Date();
var y = now.getFullYear();
var m = now.getMonth() + 1;
var d = now.getDate();
var hour = now.getHours();
var min = now.getMinutes();
var sec = now.getSeconds();
var msec = now.getMilliseconds();
return "[" + y + "-" + (m < 10 ? "0" + m : m) +
"-" + (d < 10 ? "0" + d : d) +
" " + (hour < 10 ? "0" + hour : hour) +
":" + (min < 10 ? "0" + min : min) +
":" + (sec < 10 ? "0" + sec : sec) +
"." + (msec < 10 ? "0" + msec : msec) + "]";
}

如果时间戳是64位的数值,在nodejs中是用对象来存储的,无法直接赋值,如果不需要精确到毫秒,可以先除以1000(此时的值可直接获取到),再乘以1000(此时获取不精确的毫秒数)。  

其它待补充