我有兩個HTML輸入框,需要計算JavaScript onBlur中的時差(因爲我實時需要它),並將結果插入到新的輸入框中。使用JavaScript計算時差
格式示例:10:00 & 12:30需要給我:02:30
謝謝!
我有兩個HTML輸入框,需要計算JavaScript onBlur中的時差(因爲我實時需要它),並將結果插入到新的輸入框中。使用JavaScript計算時差
格式示例:10:00 & 12:30需要給我:02:30
謝謝!
這裏是一個可能的解決方案:
function diff(start, end) {
start = start.split(":");
end = end.split(":");
var startDate = new Date(0, 0, 0, start[0], start[1], 0);
var endDate = new Date(0, 0, 0, end[0], end[1], 0);
var diff = endDate.getTime() - startDate.getTime();
var hours = Math.floor(diff/1000/60/60);
diff -= hours * 1000 * 60 * 60;
var minutes = Math.floor(diff/1000/60);
// If using time pickers with 24 hours format, add the below line get exact hours
if (hours < 0)
hours = hours + 24;
return (hours <= 9 ? "0" : "") + hours + ":" + (minutes <= 9 ? "0" : "") + minutes;
}
非常感謝! – user1424332
我想在這裏顯示秒數。我該怎麼辦? – Chinmay235
好這項工作差不多大。現在用這個代碼來計算:23:50 - 00:10看看你得到了什麼,甚至是23:30 - 01:30。這是一團糟。 因爲得到了答案PHP中的另一種方式是:
$date1 = strtotime($_POST['started']);
$date2 = strtotime($_POST['ended']);
$interval = $date2 - $date1;
$playedtime = $interval/60;
但儘管如此,它就像你的。 我想必須帶上日期嗎?
又一次:我的努力研究和發展幫助了我。
if (isset($_POST['calculate'])) {
$d1 = $_POST['started'];
$d2 = $_POST['ended'];
if ($d2 < $d1) {
$date22 = date('Y-m-');
$date222 = date('d')-1;
$date2 = $date22."".$date222;
} else {
$date2 = date('Y-m-d');
}
$date1 = date('Y-m-d');
$start_time = strtotime($date2.' '.$d1);
$end_time = strtotime($date1.' '.$d2); // or use date('Y-m-d H:i:s') for current time
$playedtime = round(abs($start_time - $end_time)/60,2);
}
這就是你如何計算到第二天的時間。 //編輯。首先我有date1 jnd date2切換。我需要-1,因爲這個計算只在第二天和第一次約會昨天輸血。
改善和很多我的朋友腦力之後,我們來到了這個:
$begin=mktime(substr($_GET["start"], 0,2),substr($_GET["start"], 2,2),0,1,2,2003);
$end=mktime(substr($_GET["end"], 0,2),substr($_GET["end"], 2,2),0,1,3,2003);
$outcome=($end-$begin)-date("Z");
$minutes=date("i",$outcome)+date("H",$outcome)*60; //Echo minutes only
$hours = date("H:i", $outcome); //Echo time in hours + minutes like 01:10 or something.
所以你其實只需要4行代碼,讓您的結果。你只需要幾分鐘或全時(如差別是02:32)2小時32分鐘。 什麼是最重要的:仍然可以在24小時計算一夜之間又名:開始時間下午11:50,讓我們說01:00 AM(24小時制時間23:50 - 01:00),因爲在12小時模式下它可以正常工作。
什麼是最重要的:您不必格式化您的輸入。您可以使用普通的2300作爲23:00輸入。該腳本將自行將文本字段輸入轉換爲正確的格式。 最後一個腳本使用標準html表單,方法=「get」,但您可以將其轉換爲使用POST方法。
嘗試這個
var dif = (new Date("1970-1-1 " + end-time) - new Date("1970-1-1 " + start-time))/1000/60/60;
試試這個:其實這從codeeval.com
我解決它以這種方式有問題。
該程序需要一個文件作爲參數,所以我用一個小節點js來讀取文件。
這是我的代碼。
var fs = require("fs");
fs.readFileSync(process.argv[2]).toString().split('\n').forEach(function (line) {
if (line !== "") {
var arr = line.split(" ");
var arr1 = arr[0].split(":");
var arr2 = arr[1].split(":");
var time1 = parseInt(arr1[0])*3600 + parseInt(arr1[1])*60 + parseInt(arr1[2]);
var time2 = parseInt(arr2[0])*3600 + parseInt(arr2[1])*60 + parseInt(arr2[2]);
var dif = Math.max(time1,time2) - Math.min(time1,time2);
var ans = [];
ans[0] = Math.floor(dif/3600);
if(ans[0]<10){ans[0] = "0"+ans[0]}
dif = dif%3600;
ans[1] = Math.floor(dif/60);
if(ans[1]<10){ans[1] = "0"+ans[1]}
ans[2] = dif%60;
if(ans[2]<10){ans[2] = "0"+ans[2]}
console.log(ans.join(":"));
}
});
當OP說HTML輸入框和JavaScript onBlur事件時,我認爲他很清楚,參數不應該來自文件。 – jagc
這是已經提交的版本的更新版本。它與秒。
function diff(start, end) {
start = start.split(":");
end = end.split(":");
var startDate = new Date(0, 0, 0, start[0], start[1], 0);
var endDate = new Date(0, 0, 0, end[0], end[1], 0);
var diff = endDate.getTime() - startDate.getTime();
var hours = Math.floor(diff/1000/60/60);
diff -= hours * (1000 * 60 * 60);
var minutes = Math.floor(diff/1000/60);
diff -= minutes * (1000 * 60);
var seconds = Math.floor(diff/1000);
// If using time pickers with 24 hours format, add the below line get exact hours
if (hours < 0)
hours = hours + 24;
return (hours <= 9 ? "0" : "") + hours + ":" + (minutes <= 9 ? "0" : "") + minutes + (seconds<= 9 ? "0" : "") + seconds;
}
我的更新版本:
允許您將日期轉換成毫秒,熄滅的那個,而不是分裂。
例子並 - 年/月/周/天/小時/分/秒
您提供給秒鐘之內沒有得到結果到我,請找我更新的功能給你這裏正確秒 - 通過迪內希Ĵ
function diff(start, end) {
start = start.split(":");
end = end.split(":");
var startDate = new Date(0, 0, 0, start[0], start[1],start[2], 0);
var endDate = new Date(0, 0, 0, end[0], end[1],end[2], 0);
var diff = endDate.getTime() - startDate.getTime();
var hours = Math.floor(diff/1000/60/60);
diff -= hours * 1000 * 60 * 60;
var minutes = Math.floor(diff/1000/60);
var seconds = Math.floor(diff/1000)-120;
// If using time pickers with 24 hours format, add the below line get exact hours
if (hours < 0)
hours = hours + 24;
return (hours <= 9 ? "0" : "") + hours + ":" + (minutes <= 9 ? "0" : "") + minutes+ ":" + (seconds <= 9 ? "0" : "") + seconds;
}
我們一般需要的時間差以估計的I/O操作所用的時間,SP打電話等,爲的NodeJS(控制檯是callback-異步執行)最簡單的辦法是繼:
var startTime = new Date().getTime();
//This will give you current time in milliseconds since 1970-01-01
callYourExpectedFunction(param1, param2, function(err, result){
var endTime = new Date().getTime();
//This will give you current time in milliseconds since 1970-01-01
console.log(endTime - startTime)
//This will give you time taken in milliseconds by your function
if(err){
}
else{
}
})
您正在使用'Java','JScript'或'Javascript'嗎?他們都是不同的語言。 – Paulpro
'javascript'是** NOT **'java'的腳本語言! – gdoron
它們是文本框中的實際日期嗎?你能發佈HTML和一些示例數據嗎? – mattytommo