| 68 | } |
| 69 | |
| 70 | function parseSnowflake() { |
| 71 | try { |
| 72 | var EPOCH = 1288834974657n; |
| 73 | var id = BigInt($('snowflakeInput').value.trim()); |
| 74 | var timestamp = Number((id >> 22n) + EPOCH); |
| 75 | var datacenterId = Number((id >> 17n) & 0x1Fn); |
| 76 | var machineId = Number((id >> 12n) & 0x1Fn); |
| 77 | var sequence = Number(id & 0xFFFn); |
| 78 | var d = new Date(timestamp); |
| 79 | var pad = function (n, w) { return String(n).padStart(w || 2, '0'); }; |
| 80 | var datetime = d.getFullYear() + '-' + pad(d.getMonth() + 1) + '-' + pad(d.getDate()) + |
| 81 | ' ' + pad(d.getHours()) + ':' + pad(d.getMinutes()) + ':' + pad(d.getSeconds()) + |
| 82 | '.' + pad(d.getMilliseconds(), 3); |
| 83 | |
| 84 | $('parsedTimestamp').textContent = timestamp; |
| 85 | $('parsedDatetime').textContent = datetime; |
| 86 | $('parsedDatacenterId').textContent = datacenterId; |
| 87 | $('parsedMachineId').textContent = machineId; |
| 88 | $('parsedSequence').textContent = sequence; |
| 89 | $('snowflakeParsed').style.display = ''; |
| 90 | } catch (e) { |
| 91 | alert('无法解析该雪花ID,请检查输入'); |
| 92 | } |
| 93 | } |
| 94 | |
| 95 | function generateNanoId() { |
| 96 | var alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-'; |