UNPKG

@awsui/components-react

Version:

On July 19th, 2022, we launched [Cloudscape Design System](https://cloudscape.design). Cloudscape is an evolution of AWS-UI. It consists of user interface guidelines, front-end components, design resources, and development tools for building intuitive, en

28 lines 1.4 kB
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 import { addMinutes } from 'date-fns'; import { joinDateTime } from '.'; import { formatDate } from './format-date'; import { formatTime } from './format-time'; import { parseTimezoneOffset } from './parse-timezone-offset'; /** * Re-formats an ISO8601 date string so that it is expressed using the * target timezone offset. The returned date string still represents the * same instant in time, but contains no visible offset. * * Example: * ``` * shiftTimezoneOffset("2020-01-01T09:00:00+03:00", 2 * 60) === "2020-01-01T08:00:00" * ``` */ export function shiftTimezoneOffset(dateString, targetTimezoneOffset) { const [datePart, timeAndOffsetPart = ''] = dateString.split('T'); const [timePart] = timeAndOffsetPart.split(/-|\+|Z/); const valueWithoutOffset = joinDateTime(datePart, timePart); const originalTimezoneOffset = parseTimezoneOffset(dateString); const date = new Date(valueWithoutOffset); targetTimezoneOffset = targetTimezoneOffset !== null && targetTimezoneOffset !== void 0 ? targetTimezoneOffset : 0 - date.getTimezoneOffset(); const adjustedDate = addMinutes(date, targetTimezoneOffset - originalTimezoneOffset); return joinDateTime(formatDate(adjustedDate), formatTime(adjustedDate)); } //# sourceMappingURL=shift-timezone-offset.js.map