function formatTime(time) { if (typeof time !== 'number' || time < 0) { return time; } const hour = parseInt(time / 3600, 10); time %= 3600; const minute = parseInt(time / 60, 10); time = parseInt(time % 60, 10); const second = time; return ([hour, minute, second]).map(n => { n = n.toString(); return n[1] ? n : `0${n}`; }).join(':'); } function formatLocation(longitude, latitude) { if (typeof longitude === 'string' && typeof latitude === 'string') { longitude = parseFloat(longitude); latitude = parseFloat(latitude); } longitude = longitude.toFixed(2); latitude = latitude.toFixed(2); return { longitude: longitude.toString().split('.'), latitude: latitude.toString().split('.'), }; } function fib(n) { if (n < 1) return 0; if (n <= 2) return 1; return fib(n - 1) + fib(n - 2); } function formatLeadingZeroNumber(n, digitNum = 2) { n = n.toString(); const needNum = Math.max(digitNum - n.length, 0); return new Array(needNum).fill(0).join('') + n; } function formatDateTime(date, withMs = false) { const year = date.getFullYear(); const month = date.getMonth() + 1; const day = date.getDate(); const hour = date.getHours(); const minute = date.getMinutes(); const second = date.getSeconds(); const ms = date.getMilliseconds(); let ret = `${[year, month, day].map(value => formatLeadingZeroNumber(value, 2)).join('-') } ${[hour, minute, second].map(value => formatLeadingZeroNumber(value, 2)).join(':')}`; if (withMs) { ret += `.${formatLeadingZeroNumber(ms, 3)}`; } return ret; } function compareVersion(v1, v2) { v1 = v1.split('.'); v2 = v2.split('.'); const len = Math.max(v1.length, v2.length); while (v1.length < len) { v1.push('0'); } while (v2.length < len) { v2.push('0'); } for (let i = 0; i < len; i++) { const num1 = parseInt(v1[i], 10); const num2 = parseInt(v2[i], 10); if (num1 > num2) { return 1; } if (num1 < num2) { return -1; } } return 0; } module.exports = { formatTime, formatLocation, fib, formatDateTime, compareVersion, };