Files
juzi/h5/test/beijing-time.js
T

19 lines
1.4 KiB
JavaScript

'use strict';
const assert = require('node:assert/strict');
const Time = require('../js/beijing-time');
assert.equal(Time.format('2026-10-14T06:34:42.839Z'), '2026-10-14 14:34:42');
assert.equal(Time.format('2026-10-14T14:34:42.839+08:00'), '2026-10-14 14:34:42');
assert.equal(Time.format('2026-10-14 14:34:42'), '2026-10-14 14:34:42');
assert.equal(Time.day('2026-10-13T15:59:59.999Z'), '2026-10-13');
assert.equal(Time.day('2026-10-13T16:00:00.000Z'), '2026-10-14');
assert.equal(Time.format(null), '-'); assert.equal(Time.format('bad'), '-');
const range = Time.range('2026-10-14', '2026-10-14');
assert.equal(new Date(range.start).toISOString(), '2026-10-13T16:00:00.000Z');
assert.equal(new Date(range.end).toISOString(), '2026-10-14T16:00:00.000Z');
assert.equal(Time.range('2024-02-29', '2024-02-29').end - Time.range('2024-02-29', '2024-02-29').start, 86400000);
for (const args of [['2026-02-29', null], ['2026-02-30', null], ['bad', null], ['2026-10-15', '2026-10-14']]) assert.throws(() => Time.range(...args));
const instant = Time.range('2026-10-14T06:34:42.839Z', '2026-10-14T14:34:42.839+08:00');
assert.equal(instant.end - instant.start, 1, 'full ISO end remains inclusive to the millisecond');
assert.deepEqual(Time.range(null, null), { start: -Infinity, end: Infinity });
console.log('PASS Beijing time: UTC/+08/zone-less formatting, midnight boundaries, leap day, invalid dates, ISO instants');