| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- import { formatOffset, parseZoneInfo } from "../impl/util.js";
- import Zone from "../zone.js";
- let singleton = null;
- /**
- * Represents the local zone for this JavaScript environment.
- * @implements {Zone}
- */
- export default class SystemZone extends Zone {
- /**
- * Get a singleton instance of the local zone
- * @return {SystemZone}
- */
- static get instance() {
- if (singleton === null) {
- singleton = new SystemZone();
- }
- return singleton;
- }
- /** @override **/
- get type() {
- return "system";
- }
- /** @override **/
- get name() {
- return new Intl.DateTimeFormat().resolvedOptions().timeZone;
- }
- /** @override **/
- get isUniversal() {
- return false;
- }
- /** @override **/
- offsetName(ts, { format, locale }) {
- return parseZoneInfo(ts, format, locale);
- }
- /** @override **/
- formatOffset(ts, format) {
- return formatOffset(this.offset(ts), format);
- }
- /** @override **/
- offset(ts) {
- return -new Date(ts).getTimezoneOffset();
- }
- /** @override **/
- equals(otherZone) {
- return otherZone.type === "system";
- }
- /** @override **/
- get isValid() {
- return true;
- }
- }
|