Date.toLocaleString异常:邮件日期字段显示undefined问题排查
问题诊断与解决
核心问题:时区字符串拼写错误
你代码里的时区参数存在拼写错误:
const date = new Date().toLocaleString("en-GB", { timeZone: "Europe/Athensli", // 此处多了一个冗余字母i });
正确的时区标识符应为"Europe/Athens",拼写错误会导致toLocaleString无法识别有效时区,最终返回undefined,这就是邮件中日期字段显示异常的直接原因。
关于终端测试的补充说明
你在Node终端执行:
let dt = new Date().toLocaleString("en-GB", {timezone: "Europe/Athens",}); console.log(dt);
后出现的undefined是正常现象——let声明语句本身没有返回值,终端先输出console.log(dt)的结果18/09/2023, 12:29:32,随后显示的是整个语句的执行返回值undefined,这和日期生成逻辑无关。另外注意,标准配置参数名是驼峰式的timeZone,虽然Node环境可能兼容小写timezone,但建议统一使用标准写法避免潜在问题。
修正后的代码
const date = new Date().toLocaleString("en-GB", { timeZone: "Europe/Athens", // 修正时区拼写 }); const mailMe = { from: process.env.EMAIL, to: process.env.MYEMAIL, subject: "New Message", html: `<p>Name: ${name}</p> <p>Date: ${date}</p> <p>Email: ${email}</p> <p>Company: ${company}</p> <p>Message: ${message}</p>`, };
内容的提问来源于stack exchange,提问作者GeorgeTheFool
相关产品推荐
相关产品推荐

