如何使用JavaScript將秒轉換爲HH-MM-SS
字符串?用JavaScript將秒轉換爲HH-MM-SS?
回答
你不知道datejs?這是一個必須知道的。
使用datejs,只寫類似:
(new Date).clearTime()
.addSeconds(15457)
.toString('H:mm:ss');
--update
如今date.js已經過時,不能維持,所以用 「Moment.js」,這是好多了,通過指出TJ克勞德。
@Yassir和裏貝羅回答:FWIW,DateJS多年來一直沒有維護,並且確實有一些突出的錯誤(儘管據我所知,他們主要是在解析和午夜方面)。 [momentjs](http://momentjs.com/)看起來不錯,目前正在維護。 – 2012-11-21 08:31:22
@ J.J。克勞德,你是對的。但是,這個答案是在2009年給出的,那個時候這是一個很好的理想。我更新了我的答案。 – Cleiton 2012-12-12 20:31:21
@Cleiton,您的更新答案未滿。我嘗試了它,得到:'TypeError:Object [object Date]沒有方法'clearTime''。 – 2013-04-25 21:26:03
我不認爲標準日期對象的任何內置功能都會以比自己做數學更方便的方式爲您完成。
hours = Math.floor(totalSeconds/3600);
totalSeconds %= 3600;
minutes = Math.floor(totalSeconds/60);
seconds = totalSeconds % 60;
是的,但你可能會得到這個1:4:43而不是01:04:43! – 2009-08-24 14:47:10
最近downvoter會喜歡分享爲什麼你覺得這是「沒用」? – 2012-11-21 08:29:50
我認爲這有一些問題?當我嘗試它的時候,我得到了小數點,所以180秒將會在小時變量中返回'0.05'。我把它放在一個'parseInt'裏面,用於解決我的問題,但我認爲這對所有的事情都是不準確的。儘管如此,這幫助了我,所以謝謝! – BT643 2014-03-18 12:08:21
我用這個代碼之前創建一個簡單的時間跨度對象:
function TimeSpan(time) {
this.hours = 0;
this.minutes = 0;
this.seconds = 0;
while(time >= 3600)
{
this.hours++;
time -= 3600;
}
while(time >= 60)
{
this.minutes++;
time -= 60;
}
this.seconds = time;
}
var timespan = new Timespan(3662);
該做的伎倆:
function secondstotime(secs)
{
var t = new Date(1970,0,1);
t.setSeconds(secs);
var s = t.toTimeString().substr(0,8);
if(secs > 86399)
s = Math.floor((t - Date.parse("1/1/70"))/3600000) + s.substr(2);
return s;
}
(從here來源)
var time1 = date1.getTime();
var time2 = date2.getTime();
var totalMilisec = time2 - time1;
alert(DateFormat('hh:mm:ss',new Date(totalMilisec)))
/* ----------------------------------------------------------
* Field | Full Form | Short Form
* -------------|--------------------|-----------------------
* Year | yyyy (4 digits) | yy (2 digits)
* Month | MMM (abbr.) | MM (2 digits)
| NNN (name) |
* Day of Month | dd (2 digits) |
* Day of Week | EE (name) | E (abbr)
* Hour (1-12) | hh (2 digits) |
* Minute | mm (2 digits) |
* Second | ss (2 digits) |
* ----------------------------------------------------------
*/
function DateFormat(formatString,date){
if (typeof date=='undefined'){
var DateToFormat=new Date();
}
else{
var DateToFormat=date;
}
var DAY = DateToFormat.getDate();
var DAYidx = DateToFormat.getDay();
var MONTH = DateToFormat.getMonth()+1;
var MONTHidx = DateToFormat.getMonth();
var YEAR = DateToFormat.getYear();
var FULL_YEAR = DateToFormat.getFullYear();
var HOUR = DateToFormat.getHours();
var MINUTES = DateToFormat.getMinutes();
var SECONDS = DateToFormat.getSeconds();
var arrMonths = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
var arrDay=new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
var strMONTH;
var strDAY;
var strHOUR;
var strMINUTES;
var strSECONDS;
var Separator;
if(parseInt(MONTH)< 10 && MONTH.toString().length < 2)
strMONTH = "0" + MONTH;
else
strMONTH=MONTH;
if(parseInt(DAY)< 10 && DAY.toString().length < 2)
strDAY = "0" + DAY;
else
strDAY=DAY;
if(parseInt(HOUR)< 10 && HOUR.toString().length < 2)
strHOUR = "0" + HOUR;
else
strHOUR=HOUR;
if(parseInt(MINUTES)< 10 && MINUTES.toString().length < 2)
strMINUTES = "0" + MINUTES;
else
strMINUTES=MINUTES;
if(parseInt(SECONDS)< 10 && SECONDS.toString().length < 2)
strSECONDS = "0" + SECONDS;
else
strSECONDS=SECONDS;
switch (formatString){
case "hh:mm:ss":
return strHOUR + ':' + strMINUTES + ':' + strSECONDS;
break;
//More cases to meet your requirements.
}
}
您還可以使用下面的代碼:
int ss = nDur%60;
nDur = nDur/60;
int mm = nDur%60;
int hh = nDur/60;
function formatSeconds(seconds)
{
var date = new Date(1970,0,1);
date.setSeconds(seconds);
return date.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, "$1");
}
formatSeconds(3919); //退貨01:05:19 非常好的功能..喜歡它 – 2014-04-01 07:25:47
如果你高於24小時不起作用 – 2017-12-04 09:13:50
new Date().toString().split(" ")[4];
結果15:08:03
由於裏貝羅在his answer指出,moment.js可以用於此:
moment().startOf('day')
.seconds(15457)
.format('H:mm:ss');
var timeInSec = "661"; //even it can be string
String.prototype.toHHMMSS = function() {
/* extend the String by using prototypical inheritance,
so that you can use it to any string directly across all your app. */
var seconds = parseInt(this, 10); // don't forget the second param
var hours = Math.floor(seconds/3600);
var minutes = Math.floor((seconds - (hours * 3600))/60);
var seconds = seconds - (hours * 3600) - (minutes * 60);
if (hours < 10) {hours = "0"+hours;}
if (minutes < 10) {minutes = "0"+minutes;}
if (seconds < 10) {seconds = "0"+seconds;}
var time = hours+':'+minutes+':'+seconds;
return time;
}
alert("5678".toHHMMSS());
console.log(timeInSec.toHHMMSS());
,或者你可以檢查此在這裏工作:http://fiddle.jshell.net/sahilosheal/N2B5J/
此外......如果你想輕鬆地做所有日期時間的事情..使用時間jS – sheelpriy 2015-08-13 07:45:57
您可以管理要做到這一點,無需任何外部JavaScript庫的JavaScript日期的幫助方法類似以下內容:
var date = new Date(null);
date.setSeconds(SECONDS); // specify value for SECONDS here
var result = date.toISOString().substr(11, 8);
對於任何人使用AngularJS,一簡單的解決方案是用date API過濾值,該值根據請求的格式將毫秒轉換爲字符串。例如:
<div>Offer ends in {{ timeRemaining | date: 'HH:mm:ss' }}</div>
注意,這個預期毫秒,所以你可能希望通過1000乘timeRemaining如果你是從秒轉換(因爲原來的問題是制定)。
下面是秒轉換爲HH-MM-SS格式的功能基礎上powtac的回答here
/**
* Convert seconds to hh-mm-ss format.
* @param {number} totalSeconds - the total seconds to convert to hh- mm-ss
**/
var SecondsTohhmmss = function(totalSeconds) {
var hours = Math.floor(totalSeconds/3600);
var minutes = Math.floor((totalSeconds - (hours * 3600))/60);
var seconds = totalSeconds - (hours * 3600) - (minutes * 60);
// round seconds
seconds = Math.round(seconds * 100)/100
var result = (hours < 10 ? "0" + hours : hours);
result += "-" + (minutes < 10 ? "0" + minutes : minutes);
result += "-" + (seconds < 10 ? "0" + seconds : seconds);
return result;
}
示例使用
var seconds = SecondsTohhmmss(70);
console.log(seconds);
// logs 00-01-10
易於遵循版本noobies :
var totalNumberOfSeconds = YOURNUMBEROFSECONDS;
var hours = parseInt(totalNumberOfSeconds/3600);
var minutes = parseInt((totalNumberOfSeconds - (hours * 3600))/60);
var seconds = Math.floor((totalNumberOfSeconds - ((hours * 3600) + (minutes * 60))));
var result = (hours < 10 ? "0" + hours : hours) + ":" + (minutes < 10 ? "0" + minutes : minutes) + ":" + (seconds < 10 ? "0" + seconds : seconds);
console.log(result);
試試這個:
function toTimeString(seconds) {
return (new Date(seconds * 1000)).toUTCString().match(/(\d\d:\d\d:\d\d)/)[0];
}
這裏是一個擴展數量級。 toHHMMSS()將秒轉換爲hh:mm:ss字符串。
Number.prototype.toHHMMSS = function() {
var hours = Math.floor(this/3600) < 10 ? ("00" + Math.floor(this/3600)).slice(-2) : Math.floor(this/3600);
var minutes = ("00" + Math.floor((this % 3600)/60)).slice(-2);
var seconds = ("00" + (this % 3600) % 60).slice(-2);
return hours + ":" + minutes + ":" + seconds;
}
// Usage: [number variable].toHHMMSS();
// Here is a simple test
var totalseconds = 1234;
document.getElementById("timespan").innerHTML = totalseconds.toHHMMSS();
// HTML of the test
<div id="timespan"></div>
看着所有的答案,而不是快樂與大部分後,這是我想出了。我知道我談話的時間已經很晚了,但無論如何這都是。
function secsToTime(secs){
var time = new Date();
// create Date object and set to today's date and time
time.setHours(parseInt(secs/3600) % 24);
time.setMinutes(parseInt(secs/60) % 60);
time.setSeconds(parseInt(secs%60));
time = time.toTimeString().split(" ")[0];
// time.toString() = "HH:mm:ss GMT-0800 (PST)"
// time.toString().split(" ") = ["HH:mm:ss", "GMT-0800", "(PST)"]
// time.toTimeString().split(" ")[0]; = "HH:mm:ss"
return time;
}
我創建了一個新的Date對象,更改時我的參數,Date對象轉換爲時間字符串,並通過分割字符串,返回只需要部分除去額外的東西。
我想我會分享這種方法,因爲它不需要正則表達式,邏輯和數學雜技來獲得「HH:mm:ss」格式的結果,而是依賴於內置方法。
你可能想看看文檔在這裏:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
我知道這是有點老了,但是......
ES2015:
var toHHMMSS = (secs) => {
var sec_num = parseInt(secs, 10)
var hours = Math.floor(sec_num/3600) % 24
var minutes = Math.floor(sec_num/60) % 60
var seconds = sec_num % 60
return [hours,minutes,seconds]
.map(v => v < 10 ? "0" + v : v)
.filter((v,i) => v !== "00" || i > 0)
.join(":")
}
這將輸出:
toHHMMSS(13545) // 03:45:45
toHHMMSS(180) // 03:00
toHHMMSS(18) // 00:18
幾分之一秒呢? 03:45:45.xxx? – 2017-06-16 18:54:49
使用momentjs進行singleday calculatio ñ
var number = 10000(milliseconds);
var momentObject = moment.duration(number);
var output = momentObject.hours()+"HH"+momentObject.minutes()+"MM"+minuteObject.seconds()+"S"
我只是想給一點解釋給漂亮的答案以上:
var totalSec = new Date().getTime()/1000;
var hours = parseInt(totalSec/3600) % 24;
var minutes = parseInt(totalSec/60) % 60;
var seconds = totalSec % 60;
var result = (hours < 10 ? "0" + hours : hours) + "-" + (minutes < 10 ? "0" + minutes : minutes) + "-" + (seconds < 10 ? "0" + seconds : seconds);
在第二行,因爲有3600秒,1小時後,我們把總數通過3600秒獲得總小時數。我們使用parseInt去除任何小數。如果totalSec是12600(3個半小時),那麼parseInt(totalSec/3600)將返回3,因爲我們將有3個完整的小時。爲什麼我們在這種情況下需要%24?如果我們超過24小時,假設我們有25小時(90000秒),那麼這裏的模數將使我們重新回到1,而不是返回25。由於一天有24小時,因此限制了24小時內的結果。
當你看到這樣的事情:
25 % 24
把它看成是這樣的:
25 mod 24 or what is the remainder when we divide 25 by 24
這個功能應該這樣做:
var convertTime = function (input, separator) {
var pad = function(input) {return input < 10 ? "0" + input : input;};
return [
pad(Math.floor(input/3600)),
pad(Math.floor(input % 3600/60)),
pad(Math.floor(input % 60)),
].join(typeof separator !== 'undefined' ? separator : ':');
}
不會通過一個分離器,它使用:
作爲(默認)分隔符:
time = convertTime(13551.9941351); // --> OUTPUT = 03:45:51
如果你想使用-
作爲分隔符,只是把它作爲第二個參數:
time = convertTime(1126.5135155, '-'); // --> OUTPUT = 00-18-46
又見this Fiddle。
在這個舊線程中尋找--OP聲明HH:MM:SS和許多解決方案都可以工作,直到你意識到你需要超過24小時的上市時間。也許你不想要一行代碼。這裏你去:
d=(s)=>{f=Math.floor;g=(n)=>('00'+n).slice(-2);return f(s/3600)+':'+g(f(s/60)%60)+':'+g(s%60)}
它返回H +:MM:SS。要使用它,只需使用:
d(91260); // returns "25:21:00"
d(960); // returns "0:16:00"
...我試圖得到它使用的代碼儘可能少,一個不錯的單行辦法。
下面您是否也可以提供代碼的擴展/閱讀版本,以便我們更容易地看到發生了什麼?謝謝。 – Kimball 2017-06-30 02:30:01
是給定的代碼,這將秒轉換成HH-MM-ss格式:
var measuredTime = new Date(null);
measuredTime.setSeconds(4995); // specify value of SECONDS
var MHSTime = measuredTime.toISOString().substr(11, 8);
有很多解決這一問題的方案,並明顯存在是不錯的選擇,建議一下,但我想在這裏補充
function formatSeconds(sec) {
return [(sec/3600), ((sec % 3600)/60), ((sec % 3600) % 60)]
.map(v => v < 10 ? "0" + parseInt(v) : parseInt(v))
.filter((i, j) => i !== "00" || j > 0)
.join(":");
}
一個更優化的代碼,如果你不都想格式化爲零小於10號,你可以使用
function formatSeconds(sec) {
return parseInt(sec/3600) + ':' + parseInt((sec % 3600)/60) + ':' + parseInt((sec % 3600) % 60);
}
- 1. 如何將HHMMSS轉換爲HH:MM:SS Unix?
- 2. javascript:將秒轉換爲幾個月
- 3. JavaScript將秒轉換爲日期對象
- 4. Javascript - 將日期格式轉換爲秒
- 5. 將時間轉換爲秒+毫秒秒
- 6. 用JavaScript將秒轉換成HH-MM?
- 7. 將jiffies轉換爲毫秒
- 8. 將hh:mm:ss轉換爲秒
- 9. 將QTime轉換爲秒
- 10. 將jiffies轉換爲秒
- 11. 將Ecto.DateTime轉換爲毫秒
- 12. 將秒轉換爲天,分和秒
- 13. 將負秒轉換爲小時:分:秒
- 14. 使用PHP將毫秒數轉換爲javascript時間戳
- 15. 如何將秒錶刻度轉換爲納秒,毫秒和秒?
- 16. javascript時間轉換(秒 - =)
- 17. 將用戶輸入限制爲HHMMSS
- 18. 將ULARGE_INTEGER QuadPart轉換爲毫秒
- 19. 將毫秒轉換爲時間碼
- 20. Ruby:將時間轉換爲秒?
- 21. php:將毫秒轉換爲日期
- 22. 如何將HH:mm:ss.SSS轉換爲毫秒?
- 23. 如何將時間量轉換爲秒?
- 24. 將ntp小時轉換爲毫秒
- 25. 將弧度轉換爲度,分和秒
- 26. 將時間戳轉換爲毫秒 - MATLAB
- 27. 將毫秒數值轉換爲日期?
- 28. 如何將循環轉換爲納秒
- 29. 將時間碼轉換爲秒
- 30. 將參考轉換爲秒 - Python
見我在http://stackoverflow.com/a/6313008/22470 – powtac 2012-11-13 20:45:44