diff --git a/src/shared/approval-status/approval-status-tag.js b/src/shared/approval-status/approval-status-tag.js index d2feab7f..001865d7 100644 --- a/src/shared/approval-status/approval-status-tag.js +++ b/src/shared/approval-status/approval-status-tag.js @@ -10,7 +10,7 @@ import { import { useServerDateTimeAsLocal } from './use-server-date-time-as-local.js' const ApprovalStatusTag = ({ approvalStatus, approvedAt, approvedBy }) => { - const approvalDateTime = useServerDateTimeAsLocal(approvedAt) + const approvalDateTime = approvedAt && useServerDateTimeAsLocal(approvedAt) const { icon: Icon, displayName, diff --git a/src/shared/approval-status/use-server-date-time-as-local.js b/src/shared/approval-status/use-server-date-time-as-local.js index f61f1f11..b2a6000e 100644 --- a/src/shared/approval-status/use-server-date-time-as-local.js +++ b/src/shared/approval-status/use-server-date-time-as-local.js @@ -1,15 +1,18 @@ import { useConfig } from '@dhis2/app-runtime' +const msPerHr = 1000 * 60 * 60 + export const useServerDateTimeAsLocal = dateTime => { const { systemInfo } = useConfig() - const timestamp = new Date(dateTime).getTime() const localNow = new Date() const nowAtServerTimeZone = new Date( localNow.toLocaleString('en-US', { timeZone: systemInfo.serverTimeZoneId, }) ) + const timestamp = new Date(dateTime).getTime() const timeOffset = localNow.getTime() - nowAtServerTimeZone.getTime() + const timeOffsetRoundedToHours = Math.round(timeOffset / msPerHr) * msPerHr - return new Date(timestamp + timeOffset) + return new Date(timestamp + timeOffsetRoundedToHours) }