fix: 修复时间存储时区转换问题

直接存储前端发送的原始日期字符串,不做 toISOString 转换
避免本地时间被错误转换为 UTC 时间

Co-Authored-By: Claude (MiniMax-M2.1) <noreply@anthropic.com>
This commit is contained in:
ddshi 2026-02-03 14:57:52 +08:00
parent e3014a9d4c
commit 88fd057155

View File

@ -6,12 +6,12 @@ import { asyncHandler } from '../middleware/errorHandler';
const router = Router();
// Validation schemas
// Validation schemas - date can be empty string for reminders
const createEventSchema = z.object({
type: z.enum(['anniversary', 'reminder']),
title: z.string().min(1, 'Title is required').max(200),
content: z.string().optional(),
date: z.string().datetime(), // ISO datetime string
date: z.string().optional(), // Can be empty for reminders
is_lunar: z.boolean().default(false),
repeat_type: z.enum(['yearly', 'monthly', 'none']).default('none'),
is_holiday: z.boolean().default(false),
@ -104,7 +104,9 @@ router.post(
const data = createEventSchema.parse(req.body);
const eventId = crypto.randomUUID();
const dateValue = new Date(data.date).toISOString();
// Handle empty date - store as null for reminders without specific time
// 直接存储前端发送的原始日期字符串,不做 toISOString 转换(避免时区问题)
const dateValue = data.date || null;
await db.execute({
sql: `INSERT INTO events (id, user_id, type, title, content, date, is_lunar, repeat_type, is_holiday, is_completed, created_at, updated_at)
@ -154,9 +156,10 @@ router.put(
updates.push('content = ?');
args.push(data.content);
}
if (data.date) {
if (data.date !== undefined) {
updates.push('date = ?');
args.push(new Date(data.date).toISOString());
// 直接存储原始字符串,不做时区转换
args.push(data.date || null);
}
if (data.is_lunar !== undefined) {
updates.push('is_lunar = ?');