将动态日期添加到静态网页

Adding dynamic date to a static webpage

我希望我的静态网页时区需要与 CST 相关,因此如果客户端 (CST) 打开此文件,它应该显示 CST 日期,如果我打开此文件,我自己 (IST) 也应该只显示 CST,可以任何人都请帮助我

HTML 文件-

<span id="spanDate"></span>

JS文件-

var months = ['January','February','March','April','May','June','July',
'August','September','October','November','December'];
const weekday = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];       
var tomorrow = new Date();       
document.getElementById("spanDate").innerHTML = months[tomorrow.getMonth()] + " " + 
tomorrow.getDate()+ ", " + tomorrow.getFullYear();

您不应该尝试自己 assemble 日期字符串。无论是月份的名称,还是年月日部分的典型排列,都非常locale-specific。相反,请使用 toLocaleString,它具有控制输出的选项,包括要使用的时区。

我假设“CST”是指美国的“中央标准时间”。如果您实际上是指“中国标准时间”或“古巴标准时间”,则需要将以下代码中的时区 ID 更改为所需的 IANA time zone identifier.

此外,您的代码使用了“明天”一词,所以我推测您想要明天的日期 - 但您只得到今天的日期。如果需要今天的日期,可以把下面代码中的第二步去掉。

// Get the current point in time
const timestamp = new Date();

// advance by 24 hours, to get to tomorrow
timestamp.setTime(timestamp.getTime() + (24 * 60 * 60 * 1000));

// format and output the result
const locale = undefined; // use the user's current locale (language/region)
document.getElementById("spanDate").innerHTML = timestamp.toLocaleString(locale, {
  timeZone: 'America/Chicago', // use the US Central Time Zone
  year: 'numeric', // include the year as a number
  month: 'long',   // include the month as the long name
  day: 'numeric'   // include the day as a number
});
<span id="spanDate"></span>

此外,请注意,虽然提前 24 小时以获得明天的日期是最简单的方法,但在某些时区的夏令时转换附近有一些边缘情况可能会有点偏离(由于有 23 或此类日子 25 小时等)。解决这个问题目前相当复杂,除非你使用像 Luxon 这样的库。但是如果你不需要这么精确,那么24小时也可以。