diff --git a/src/main/services/database/extractor-operation-history-dao.ts b/src/main/services/database/extractor-operation-history-dao.ts index eb992d4..5e24db2 100644 --- a/src/main/services/database/extractor-operation-history-dao.ts +++ b/src/main/services/database/extractor-operation-history-dao.ts @@ -21,6 +21,17 @@ import type { const log = createLogger('ExtractorOperationHistoryDAO') +/** + * Format datetime value from database to ISO string + * mssql driver returns Date objects in UTC format + */ +function formatDateTime(value: unknown): string { + if (value instanceof Date) { + return value.toISOString() + } + return value ? String(value) : new Date().toISOString() +} + /** * Configuration for ExtractorOperationHistory table */ @@ -324,9 +335,7 @@ export class ExtractorOperationHistoryDAO { batchId: row.BatchId as string, userId: row.UserId as number, username: row.Username as string, - operationTime: row.OperationTime - ? new Date(row.OperationTime as string).toISOString() - : new Date().toISOString(), + operationTime: formatDateTime(row.OperationTime), status: row.Status as string, totalOrders: row.TotalOrders as number, totalRecords: (row.TotalRecords as number) || 0, @@ -432,9 +441,7 @@ export class ExtractorOperationHistoryDAO { batchId: row.BatchId as string, userId: row.UserId as number, username: row.Username as string, - operationTime: row.OperationTime - ? new Date(row.OperationTime as string).toISOString() - : new Date().toISOString(), + operationTime: formatDateTime(row.OperationTime), status: row.Status as string, totalOrders: row.TotalOrders as number, totalRecords: (row.TotalRecords as number) || 0, diff --git a/src/renderer/src/components/ExtractorOperationHistoryModal.tsx b/src/renderer/src/components/ExtractorOperationHistoryModal.tsx index 2cec417..f148ffb 100644 --- a/src/renderer/src/components/ExtractorOperationHistoryModal.tsx +++ b/src/renderer/src/components/ExtractorOperationHistoryModal.tsx @@ -53,13 +53,20 @@ const statusIcons: Record = { const formatDateTime = (dateStr: string) => { const date = new Date(dateStr) - return date.toLocaleString('zh-CN', { - year: 'numeric', - month: '2-digit', - day: '2-digit', - hour: '2-digit', - minute: '2-digit' - }) + + // Check if the date is valid + if (isNaN(date.getTime())) { + return dateStr // Return original if invalid + } + + // Use UTC methods to display the time as stored in database (without timezone conversion) + const year = date.getUTCFullYear() + const month = String(date.getUTCMonth() + 1).padStart(2, '0') + const day = String(date.getUTCDate()).padStart(2, '0') + const hours = String(date.getUTCHours()).padStart(2, '0') + const minutes = String(date.getUTCMinutes()).padStart(2, '0') + + return `${year}-${month}-${day} ${hours}:${minutes}` } export const ExtractorOperationHistoryModal: React.FC = ({