@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
51 lines • 2.31 kB
JavaScript
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
import { padLeftZeros } from '../strings';
/**
* Formats timezone offset values used in for APIs, maintaining backward compatibility. Always
* returns "+HH:MM" format, even for UTC ("+00:00"). Used by onChange events to preserve existing
* API behavior.
*/
export function formatTimeOffsetISOInternal(isoDate, offsetInMinutes) {
offsetInMinutes = defaultToLocal(isoDate, offsetInMinutes);
const { hours, minutes } = getMinutesAndHours(offsetInMinutes);
const sign = offsetInMinutes < 0 ? '-' : '+';
const formattedOffset = `${sign}${formatISO2Digits(hours)}:${formatISO2Digits(minutes)}`;
return formattedOffset;
}
/**
* Formats timezone offset for display purposes using succinct UTC notation.
* Returns "Z" for UTC, "+HH:MM" for other offsets.
* Used for visual display in components like date-range-picker trigger text.
*/
export function formatTimeOffsetISO(isoDate, offsetInMinutes) {
offsetInMinutes = defaultToLocal(isoDate, offsetInMinutes);
if (offsetInMinutes === 0) {
return 'Z';
}
const { hours, minutes } = getMinutesAndHours(offsetInMinutes);
const sign = offsetInMinutes < 0 ? '-' : '+';
const formattedOffset = `${sign}${formatISO2Digits(hours)}:${formatISO2Digits(minutes)}`;
return formattedOffset;
}
export function formatTimeOffsetLocalized(isoDate, offsetInMinutes) {
offsetInMinutes = defaultToLocal(isoDate, offsetInMinutes);
if (offsetInMinutes === 0) {
return '(UTC)';
}
const { hours, minutes } = getMinutesAndHours(offsetInMinutes);
const sign = offsetInMinutes < 0 ? '-' : '+';
const formattedMinutes = minutes === 0 ? '' : `:${minutes}`;
const formattedOffset = `(UTC${sign}${hours}${formattedMinutes})`;
return formattedOffset;
}
function defaultToLocal(isoDate, offsetInMinutes) {
return offsetInMinutes !== null && offsetInMinutes !== void 0 ? offsetInMinutes : 0 - new Date(isoDate).getTimezoneOffset();
}
function getMinutesAndHours(minutes) {
return { hours: Math.floor(Math.abs(minutes) / 60), minutes: Math.abs(minutes % 60) };
}
function formatISO2Digits(n) {
return padLeftZeros(n.toFixed(0), 2);
}
//# sourceMappingURL=format-time-offset.js.map