Files
dewedev/node_modules/es-abstract/2023/TimeZoneString.js
dwindown 7f2dd5260f Initial commit: Developer Tools MVP with visual editor
- Complete React app with 7 developer tools
- JSON Tool with visual structured editor
- Serialize Tool with visual structured editor
- URL, Base64, CSV/JSON, Beautifier, Diff tools
- Responsive navigation with dropdown menu
- Dark/light mode toggle
- Mobile-responsive design with sticky header
- All tools working with copy/paste functionality
2025-08-02 09:31:26 +07:00

42 lines
1.9 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

'use strict';
var GetIntrinsic = require('get-intrinsic');
var $Date = GetIntrinsic('%Date%');
var $TypeError = require('es-errors/type');
var callBound = require('call-bound');
var isInteger = require('math-intrinsics/isInteger');
var $indexOf = callBound('String.prototype.indexOf');
var $slice = callBound('String.prototype.slice');
var $toTimeString = callBound('Date.prototype.toTimeString');
// https://262.ecma-international.org/14.0/#sec-timezoneestring
module.exports = function TimeZoneString(tv) {
if (!isInteger(tv)) {
throw new $TypeError('Assertion failed: `tv` must be an integral Number');
}
// 1. Let localTimeZone be DefaultTimeZone().
// 2. If IsTimeZoneOffsetString(localTimeZone) is true, then
// a. Let offsetNs be ParseTimeZoneOffsetString(localTimeZone).
// 3. Else,
// a. Let offsetNs be GetNamedTimeZoneOffsetNanoseconds(localTimeZone, ((tv) × 106)).
// 4. Let offset be 𝔽(truncate(offsetNs / 106)).
// 5. If offset is +0𝔽 or offset > +0𝔽, then
// a. Let offsetSign be "+".
// b. Let absOffset be offset.
// 6. Else,
// a. Let offsetSign be "-".
// b. Let absOffset be -offset.
// 7. Let offsetMin be ToZeroPaddedDecimalString((MinFromTime(absOffset)), 2).
// 8. Let offsetHour be ToZeroPaddedDecimalString((HourFromTime(absOffset)), 2).
// 9. Let tzName be an implementation-defined string that is either the empty String or the string-concatenation of the code unit 0x0020 (SPACE), the code unit 0x0028 (LEFT PARENTHESIS), an implementation-defined timezone name, and the code unit 0x0029 (RIGHT PARENTHESIS).
// 10. Return the string-concatenation of offsetSign, offsetHour, offsetMin, and tzName.
// hack until DefaultTimeZone, IsTimeZoneOffsetString, ParseTimeZoneOffsetString, GetNamedTimeZoneOffsetNanoseconds, and "implementation-defined string" are available
var ts = $toTimeString(new $Date(tv));
return $slice(ts, $indexOf(ts, '(') + 1, $indexOf(ts, ')'));
};