JS中的时间差有错误的结果
time difference in JS has wrong result
我有两个文本输入字段,用户可以在其中输入格式为"hh:mm"的时间。主要部分看起来像以下代码:
var time1 = new Date("01/01/2013 " + time1input);
var time2 = new Date("01/01/2013 " + time2input);
var difference = new Date(time2 - time1);
结果总是01:00到高(例如08:00-04:00导致05:00,这显然是错误的:)。我误解什么了吗?
你不能处理这样的日期。
请尝试以下操作:
var time1input = "04:00";
var time2input = "08:00";
var time1 = new Date("01/01/2013 " + time1input);
var time2 = new Date("01/01/2013 " + time2input);
var difference = time2.getTime() - time1.getTime();
console.log(difference / 60 / 60 / 1000); //<- whittle this down to hours
这将注销"4"。
如果你在处理时间问题,可以使用以下内容http://momentjs.com/,它可以让你做一些很酷的事情,比如。。
difference = moment(time2).diff(time1, 'hours'); //<- will return 4
格式(hh:mm):(假设使用与第一个示例的差异)
var hours = Math.floor(difference / 60 / 60 / 1000);
var minutes = Math.round(difference / 60 / 1000) % 60;
var formattedString = (hours > 10 ? hours : "0" + hours) + ":" + (minutes > 10 ? minutes : "0" + minutes);
4小时差将返回"04:00",13小时30分钟差将返回13:30。
查看getTime
方法。这可能有效:
var difference = new Date(time2.getTime() - time1.getTime());
通常当我们计算时差时。
我们过去常常将其转换为毫秒,找到差异并进行转换返回到一种格式。
检查此张贴
还有:
var time1 = new Date("01/01/2013 " + time1input)
var time2 = new Date("01/01/2013 " + time2input)
var difference = time2 - time1
difference
是以毫秒为单位的差值,因此要获得以小时为单位的差异,可以执行以下操作:
var time1 = new Date("01/01/2013 04:00")
var time2 = new Date("01/01/2013 08:00")
var difference = (time2 - time1)/1000/60/60
console.log(difference)
# => 4
请注意,您可以直接使用Date对象进行操作,不需要调用.getTime()
p.s.一个类似的问题很久以前就已经得到了回答
相关文章:
- 回复'js'仅当请求有错误时(否则使用html)
- 表单已发送,但验证有错误
- 如果文件不存在,fs.watch是否有错误处理程序
- Meteor上有错误的同步问题
- 表单验证:如果有错误,不要't使手风琴动起来
- 我有错误文档.注册元素未被细化
- 如何转换为特定于 json 的类 c#?我有错误
- 如果当前输入有错误或警告,则禁用所有下一个表单输入字段
- 通过有错误的 Ajax-Request 打印出 HTML 会阻止进一步的 JS 工作
- 脸书应用程序有错误
- 角度类型提前异步结果 - 收到错误“类型错误:无法使用'in'运算符搜索 ..在..".
- XDomainRequest 总是有错误
- HTML5 Canvas游戏有错误,点击时第一个拼图块会变成不同的块
- Page_ClientValidate返回 false,但没有一个验证器有错误
- 量角器由中继器命令中是否有错误
- Jquery 验证器 - 表单被保存但有错误
- AngularJS:总结我的结果的错误
- 任何人看到我的重置功能有错误
- JS中的时间差有错误的结果
- Javascript比较两个日期有错误的结果