您的 JavaScript 代码中有一些地方需要纠正和改进,以实现您正在寻找的功能。
getElementsByClassName
中的拼写错误:方法名称应该是getElementsByClassName
(复数)而不是getElementByClassName
(单数)。
解析时间戳:应使用
parseInt
元素的 innerText
调用 epoch
函数,以将纪元时间戳字符串转换为数字。
日期格式:
toDateString
方法不接受任何参数。要设置日期格式,您应该使用 toLocaleDateString
,它允许指定格式选项。
这是代码的更正和改进版本:
let epochs = document.getElementsByClassName("epoch");
for (var i = 0; i < epochs.length; i++) {
let timestamp = parseInt(epochs[i].innerText, 10);
let date = new Date(timestamp * 1000); // Convert to milliseconds
let formattedDate = date.toLocaleDateString(undefined, {
weekday: 'long',
year: 'numeric',
month: 'short',
day: 'numeric',
hour: '2-digit',
minute: '2-digit',
second: '2-digit',
timeZoneName: 'short'
});
epochs[i].innerText = formattedDate;
}
getElementsByClassName("epoch")
返回找到的元素的实时 HTMLCollection,其类名为“epoch”。parseInt(epochs[i].innerText, 10)
将每个元素的内部文本解析为以 10 为基数的整数(纪元时间戳)。new Date(timestamp * 1000)
根据纪元时间戳创建一个新的 Date 对象。 Epoch 时间以秒为单位,但 JavaScript 的 Date 对象构造函数需要毫秒,因此乘以 1000。toLocaleDateString(undefined, {...})
根据用户的本地设置格式化日期(undefined
使其使用用户的区域设置)。选项对象指定如何表示日期的各个部分。epochs[i].innerText = formattedDate
用格式化的日期字符串替换每个范围的内部文本。希望这有帮助!