【发布时间】:2026-01-03 22:00:02
【问题描述】:
如果我有两个值,每个值代表一个日期,例如 YYYYMMDDHHMM (YearMonthDayHourMinute),例如:
202012141800
202012141614
我想在问题中表达的是,这给了我 186 分钟,但这并不准确,因为在一小时内 60 分钟内最后两位数永远不会大于 59。 186 中的 100 来自 18 小时(下午 6 点)和 16 小时(下午 4 点)。
如果两个时间戳相隔一个多小时,我如何在 Javascript 中减去这些以解释额外的 40 分钟?
我有这个,但效率不高,因为我需要知道两个时间戳可以分开的最大小时数:
var end_time = $('#the-agenda li.current time').data('end-time'),
time_now = current_display_number,
timer_duration = end_time - time_now;
if (timer_duration > 200) {
// if more than 2 hours, subtract 80 minutes
timer_duration = timer_duration - 80;
}
else if (timer_duration > 100) {
// if more than 1 hour, subtract 40 minutes
timer_duration = timer_duration - 40;
}
我觉得答案可能在 this question's answer 中,但我不确定如何将 parseInt 应用于这种情况。
【问题讨论】:
-
嗯
YYYYMMDDHHMM是一个 string 格式。永远不要把它当作一个数字。对于日期算术,将它们存储为适当的时间戳(例如,自纪元以来的分钟数)。如果您将字符串作为输入,parse it. -
这能回答你的问题吗? Converting a string to a date in JavaScript
-
@Bergi 您愿意扩展“永远不要将其视为数字”。使用下面 pwilcox 提供的解决方案,我能够让它按预期工作。但是,我必须首先使用 .toString() 将我拥有的内容转换为字符串。
-
@Nathan 是您用来检索
end_time的 jQuery 吗? That's a problem。 (不过,在对其进行任何操作之前将其转换回字符串应该可以)。 -
是的@Bergi,那部分是jQuery。您提供的链接确实提供了我很好奇的额外信息。谢谢!
标签: javascript