Fix timezone date display bug - ensure correct date shown across timezones

This commit is contained in:
OpenClaw Bot 2026-02-26 16:55:09 -06:00
parent 0a34e3de47
commit e40bf61b04

View File

@ -9,6 +9,12 @@ import Head from "next/head";
import Link from "next/link"; import Link from "next/link";
import { AudioPlayer } from "@/components/AudioPlayer"; import { AudioPlayer } from "@/components/AudioPlayer";
// Helper to parse date string (YYYY-MM-DD) correctly across timezones
// Appends noon UTC to ensure consistent date display regardless of local timezone
function parseDate(dateStr: string): Date {
return new Date(`${dateStr}T12:00:00Z`);
}
interface Message { interface Message {
id: string; id: string;
date: string; date: string;
@ -219,7 +225,7 @@ function BlogPageContent() {
{getTitle(selectedPost.content)} {getTitle(selectedPost.content)}
</h1> </h1>
<p className="text-sm text-gray-500 dark:text-slate-400"> <p className="text-sm text-gray-500 dark:text-slate-400">
{format(new Date(selectedPost.date), "MMMM d, yyyy")} {format(parseDate(selectedPost.date), "MMMM d, yyyy")}
</p> </p>
</header> </header>
@ -307,7 +313,7 @@ function BlogPageContent() {
{getExcerpt(featuredPost.content, 200)} {getExcerpt(featuredPost.content, 200)}
</p> </p>
<div className="flex items-center gap-4 text-sm text-gray-500 dark:text-slate-400"> <div className="flex items-center gap-4 text-sm text-gray-500 dark:text-slate-400">
<span>{format(new Date(featuredPost.date), "MMMM d, yyyy")}</span> <span>{format(parseDate(featuredPost.date), "MMMM d, yyyy")}</span>
<span>·</span> <span>·</span>
<span>5 min read</span> <span>5 min read</span>
</div> </div>
@ -327,10 +333,10 @@ function BlogPageContent() {
{/* Date Column */} {/* Date Column */}
<div className="hidden sm:block text-center min-w-[60px]"> <div className="hidden sm:block text-center min-w-[60px]">
<div className="text-2xl font-bold text-gray-900 dark:text-slate-100"> <div className="text-2xl font-bold text-gray-900 dark:text-slate-100">
{format(new Date(post.date), "d")} {format(parseDate(post.date), "d")}
</div> </div>
<div className="text-xs text-gray-500 dark:text-slate-400 uppercase"> <div className="text-xs text-gray-500 dark:text-slate-400 uppercase">
{format(new Date(post.date), "MMM")} {format(parseDate(post.date), "MMM")}
</div> </div>
</div> </div>
@ -361,7 +367,7 @@ function BlogPageContent() {
</p> </p>
<div className="flex items-center gap-3 text-xs text-gray-500 dark:text-slate-400"> <div className="flex items-center gap-3 text-xs text-gray-500 dark:text-slate-400">
<span>{format(new Date(post.date), "MMMM d, yyyy")}</span> <span>{format(parseDate(post.date), "MMMM d, yyyy")}</span>
<span>·</span> <span>·</span>
<span>3 min read</span> <span>3 min read</span>
</div> </div>