捋一捋容易被忽略的API用法

不吃貓的魚發表於2017-08-05

Date

獲取某月的天數

下一月的第0天就是當前月的最後一天。

function daysInMonth(year, month) {
    let date = new Date(year, month + 1, 0);
    return date.getDate();
}

// 注意在JS裡月份是從0開始算的。下面算的是2017年3月份有多少天
console.log(daysInMonth(2017, 2)); // 31 
// 2017年2月有多少天
console.log(daysInMonth(2017, 1)); // 28
// 2016年2月有多少天
console.log(daysInMonth(2016, 1)); // 29複製程式碼

Date.prototype.getTimezoneOffset - 獲取當地時間跟UTC時區的時間差,以分鐘為單位。

let now = new Date(); 
console.log(now.toISOString()); //2017-08-05T13:16:35.363Z
//中國是東八區,北京時間是(GMT+08:00)
console.log(now.getTimezoneOffset()); // -480
//將本地時間換算成格林威治時間/零時區
let GMTDate = new Date(now.getTime() + now.getTimezoneOffset() * 60 * 1000);
console.log(GMTDate.toISOString()); //2017-08-05T05:16:35.363Z
//將本地時間換算成東3區時間
let eastZone3Date = new Date(GMTDate.getTime() + 3 * 60 * 60 * 1000);
console.log(eastZone3Date.toISOString()); //2017-08-05T08:20:55.235Z複製程式碼

JSON

JSON.stringify(value[, replacer[, space]])

replacer是個函式的情況 - 在stringify前對值進行操作

JSON.stringify({
    a: 4,
    b: [3, 5, 'hello'],
}, (key, val) => {
    if(typeof val === 'number') {
        return val * 2;
    }
    return val;
}); //{"a":8,"b":[6,10,"hello"]}複製程式碼

replacer是個陣列的情況 - 對key值進行白名單過濾

JSON.stringify({
    a: 4,
    b: {
        a: 5,
        d: 6
    },
    c: 8
}, ['a', 'b']); //{"a":4,"b":{"a":5}}複製程式碼

space可以用來對輸出進行格式優化

JSON.stringify({
    a: [3,4,5],
    b: 'hello'
}, null, '|--\t');
/**結果:
{
|--    "a": [
|--    |--    3,
|--    |--    4,
|--    |--    5
|--    ],
|--    "b": "hello"
}
*/複製程式碼

Reference

Notice

  • 如果您覺得該Repo讓您有所收穫,請「Star 」支援樓主。
  • 如果您想持續關注樓主的最新系列文章,請「Watch」訂閱

相關文章