计算小时和分钟之间的2日期和时间
Calculate hours and minutes between 2 date and time
希望有人能帮帮我。我有一个表单,我需要一个用户输入事件的开始时间和结束时间。一旦他们输入了信息,他们将手动输入两个日期时间之间的持续时间。我试图用jquery自动化这个过程,并得到了一个名为时刻http://momentjs.com/的插件。我希望它能让我计算2个日期时间更简单,但我必须承认,我对jquery或javascript不太了解,无法理解它们是如何组合在一起的。
另一方面,我需要只在duration字段为空时才计算它。我创建了一个jquery http://jsfiddle.net/FLhpq/2044/。这是我能找到的最接近我的场景。以下是目前为止的代码:
$(document).ready(function() {
var start_time = $('input[title="start time"]').val();
var end_time = $('input[title="End time"]').val();
var d1 = moment(start_time, "YYYY-MM-DD HH:mm");
var d2 = moment(end_time, "YYYY-MM-DD HH:mm");
var duration = d2.diff(d1, 'hours')+1;
var input = $('input[title="duration"]').val();
if(input == ''){
$('#duration').val('duration');
});
我相信你算对了。我认为这只是视觉上的执行。
我把下面的小提琴放在一起,我认为你想做什么;jsfiddle.net/.. .
$(document).ready(function() {
var start_time = $('.start').val(),
end_time = $('.end').val(),
d1 = moment(start_time, "YYYY-MM-DD HH:mm"),
d2 = moment(end_time, "YYYY-MM-DD HH:mm"),
duration = d2.diff(d1, 'hours') + 1,
$input = $('.duration');
if ($input.val() === ''){
$input.val(duration);
}
});
在你原来的小提琴。没有ID为"duration"的元素。同样,对于抓取元素,尝试用类名代替选择器。我在输入中添加了一些简单的类,以便使用jQuery更容易抓取它们。
从这里开始,如果你还想额外显示分钟/秒,你可以通过使用一些momentjs的内置功能(如to
)来改变你的持续时间逻辑。
我相信下面的话;
duration = d1.to(d2) // RETURNS MOMENT
希望这对你有所帮助!
你应该看看这个
var a = moment([2007, 0, 28]);
var b = moment([2007, 0, 29]);
a.to(b); // "in a day"
或
var a = moment([2007, 0, 29]);
var b = moment([2007, 0, 28]);
a.diff(b, 'days') // 1
这将显示小时(和分钟),如果duration
字段为空则显示它:
$(document).ready(function() {
if($('#duration').val() === '') {
updateDuration($('#start_time').val(), $('#end_time').val());
}
$('#start_time').on('change keyup', function() {
updateDuration($('#start_time').val(), $('#end_time').val());
});
$('#end_time').on('change keyup', function() {
updateDuration($('#start_time').val(), $('#end_time').val());
});
function updateDuration(startTime, endTime) {
var ms = moment(endTime, 'YYYY/MM/DD HH:mm:ss').diff(moment(startTime, 'YYYY/MM/DD HH:mm:ss')),
dt = moment.duration(ms),
h = Math.floor(dt.asHours()),
m = moment.utc(ms).format('mm');
$('#duration').val(h + ' hours, ' + m + ' minutes');
}
});
如果用户改变了值,这也会更新duration
输入字段。
您可以在这里看到一个工作的JSFiddle:
http://jsfiddle.net/divspace/9x0s01oy/相关文章:
- 更改angularjs中的日期-时间格式
- 将日期时间作为 JSON 发送将无法在我的视图中正确显示
- 将日期时间从json转换为可读格式
- 使用时刻.js从日期时间中提取时间
- 两个日期时间选择器
- Javascript:如何在onChange事件期间更改日期时间值
- .Net webApi ISO日期时间和IE8
- Javascript-如何使用bootstrap日期时间选择器自动计算两个时间输入之间的差异
- 转换日期时间格式
- 在JavaScript中转换日期/时间格式
- JavaScript JSON关联对象键和值都作为日期时间戳
- 将日期时间javascript绑定到表列
- 将JS日期解析为C#日期时间
- 使用JavaScript将客户端日期/时间字符串转换为JSON日期/时间串
- 从javascript数组获取php的日期时间
- 格式化momentjs日期时间
- 这个正则表达式的日期/时间有什么问题
- Mongoose查询在两个日期时间之间提取数据
- 当转换为Python日期时间时,Node的时间戳落后3分钟
- 自定义angularjs过滤器日期时间格式额外字符