【发布时间】:2014-10-27 02:52:14
【问题描述】:
我在 javascript 中创建了一个计时器应用程序。 首先,它需要当前的 UTC 日期来启动计时器并提供一些参考。这是代码
on_timer: function(e) {
var self = this;
if ($(e.target).hasClass("pt_timer_start")) {
var current_date = this.get_current_UTCDate();
this.project_timesheet_db.set_current_timer_activity({date: current_date});
this.start_interval();
this.initialize_timer();
this.$el.find(".pt_timer_start,.pt_timer_stop").toggleClass("o_hidden");
现在,一旦计时器启动,并且在一段时间后,计时器将参考上述on_timer: function(e) 函数经过一段时间。
这个函数是
start_interval: function() {
var timer_activity = this.project_timesheet_db.get_current_timer_activity();
var self = this;
this.intervalTimer = setInterval(function(){
self.$el.find(".pt_duration").each(function() {
var el_hour = $(this).find("span.hours");
var el_minute = $(this).find("span.minutes");
var minute = parseInt(el_minute.text());
if(minute >= 60) {
el_hour.text(_.str.sprintf("%02d", parseInt(el_hour.text()) + 1));
minute = 0;
}
el_minute.text(_.str.sprintf("%02d", minute));
var el_second = $(this).find("span.seconds");
var seconds = parseInt(el_second.text()) + 1;
if(seconds > 60) {
el_minute.text(_.str.sprintf("%02d", parseInt(el_minute.text()) + 1));
seconds = 0;
}
el_second.text(_.str.sprintf("%02d", seconds));
});
}, 1000);
},
现在,考虑 el_hour、el_minute、el_seconds 如何计算 HH:MM 中的初始时间和当前计时器值之间的时间差:SS 方式。
提前感谢您的帮助
【问题讨论】:
-
一种简单的方法是使用 ISO 字符串,它可以工作长达 24 小时。 333 秒:new Date(333 * 1000).toISOString().split("T").pop().split(".")[0];看起来像“00:05:33”
-
(date2.valueOf() - date1.valueOf()) / 1000 == 秒数差...
-
为什么不在 init 上创建一个开始日期对象,在间隔计时器中创建一个新对象
-
@beauXjames——如果使用日期对象,(date2 - date1)/1000 就可以了。 ;-)
-
@RobG -- 是的,但如果他正在查看 devtools 中的变量,他可以看到 ms 并跳过呈现的日期格式 -- 将其保留为评论以避免批评 -- ;P跨度>
标签: javascript date datetime timer date-difference