Làm cách nào tôi có thể chuyển đổi giây thành HH-MM-SS
chuỗi bằng JavaScript?
Làm cách nào tôi có thể chuyển đổi giây thành HH-MM-SS
chuỗi bằng JavaScript?
Câu trả lời:
Bạn không biết datejs ? nó là phải biết
Sử dụng datejs, chỉ cần viết một cái gì đó như:
(new Date).clearTime()
.addSeconds(15457)
.toString('H:mm:ss');
- ngày
Ngày nay date.js đã lỗi thời và không được duy trì, vì vậy hãy sử dụng " Moment.js ", điều này tốt hơn nhiều như được chỉ ra bởi TJ Crowder.
- ngày 2
Vui lòng sử dụng @ Frank là giải pháp một dòng:
new Date(SECONDS * 1000).toISOString().substr(11, 8)
Đó là giải pháp tốt nhất.
TypeError: Object [object Date] has no method 'clearTime'
.
Bạn có thể quản lý để thực hiện việc này mà không cần bất kỳ thư viện JavaScript bên ngoài nào với sự trợ giúp của phương pháp Ngày JavaScript như sau:
var date = new Date(null);
date.setSeconds(SECONDS); // specify value for SECONDS here
var result = date.toISOString().substr(11, 8);
Hoặc, theo nhận xét của @Frank ; một lớp lót:
new Date(SECONDS * 1000).toISOString().substr(11, 8);
new Date(SECONDS * 1000).toISOString().substr(11, 8);
Object doesn't support property or method 'toISOString'
Tôi không nghĩ rằng bất kỳ tính năng tích hợp nào của đối tượng Ngày chuẩn sẽ thực hiện điều này cho bạn theo cách thuận tiện hơn là tự mình làm toán.
hours = Math.floor(totalSeconds / 3600);
totalSeconds %= 3600;
minutes = Math.floor(totalSeconds / 60);
seconds = totalSeconds % 60;
Thí dụ:
0.05
trong hours
biến. Tôi đặt nó bên trong một parseInt
cái đã sửa nó cho trường hợp của tôi, nhưng tôi không nghĩ rằng nó chính xác cho mọi thứ. Tuy nhiên, điều này đã giúp tôi, vì vậy cảm ơn!
parseInt
nó, đó là để phân tích chuỗi , không thao tác số. Math.floor
sẽ là hoạt động có liên quan ở đây.
seconds = Math.floor(totalSeconds % 60);
. Tôi chỉ có một kết quả thập phân ở đó quá.
totalSeconds % 60
chỉ có thể có một phần phân số nếu totalSeconds
có một phần phân số. Cho dù bạn muốn lên sàn, nó sẽ phụ thuộc vào việc bạn muốn mất thông tin đó hay giữ lại thông tin đó. (Các hoạt động sàn khác mà chúng tôi đang thực hiện không làm mất bất kỳ thông tin nào, vì họ chỉ xóa dữ liệu sẽ kết thúc minutes
và seconds
.)
console.log( hours +':'+ ('0'+minutes).slice(-2) +':'+ ('0'+seconds).slice(-2) );
Tôi biết điều này hơi cũ, nhưng ...
ES2015:
var toHHMMSS = (secs) => {
var sec_num = parseInt(secs, 10)
var hours = Math.floor(sec_num / 3600)
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(":")
}
Nó sẽ xuất ra:
toHHMMSS(129600) // 36:00:00
toHHMMSS(13545) // 03:45:45
toHHMMSS(180) // 03:00
toHHMMSS(18) // 00:18
Như Cleiton đã chỉ ra trong câu trả lời của mình , khoảnh khắc có thể được sử dụng cho việc này:
moment().startOf('day')
.seconds(15457)
.format('H:mm:ss');
moment().startOf('year').seconds(30000000).format('DDD HH:mm:ss')
.
.format('YYYY DDD HH:mm:ss')
function formatSeconds(seconds)
{
var date = new Date(1970,0,1);
date.setSeconds(seconds);
return date.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, "$1");
}
var timeInSec = "661"; //even it can be string
String.prototype.toHHMMSS = function () {
/* extend the String by using prototypical inheritance */
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);
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()); // "01:34:38"
console.log(timeInSec.toHHMMSS()); //"00:11:01"
chúng ta có thể làm cho hàm này ngắn hơn và rõ nét hơn nhưng điều đó làm giảm khả năng đọc, vì vậy chúng ta sẽ viết nó đơn giản nhất có thể và ổn định nhất có thể.
hoặc bạn có thể kiểm tra điều này làm việc ở đây :
Đây là một phần mở rộng cho lớp Number. toHHMMSS () chuyển đổi giây thành chuỗi 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>
Phiên bản dễ theo dõi cho người mới:
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);
Chức năng này sẽ làm điều đó:
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 : ':' );
}
Không vượt qua dấu phân cách, nó sử dụng :
như dấu phân cách (mặc định):
time = convertTime(13551.9941351); // --> OUTPUT = 03:45:51
Nếu bạn muốn sử dụng -
như một dấu phân cách, chỉ cần chuyển nó làm tham số thứ hai:
time = convertTime(1126.5135155, '-'); // --> OUTPUT = 00-18-46
Xem thêm Fiddle này .
:
làm mặc định cho separator
tham số, như tôi đã giải thích. Điều này được thực hiện bởi tuyên bố typeof separator !== 'undefined' ? separator : ':'
. Ngoài ra, chức năng của bạn khá giống với tôi lưu một số thay đổi mỹ phẩm và cả hai sẽ tạo ra cùng một đầu ra ... ngoại trừ phiên bản của tôi có hỗ trợ trình duyệt tốt hơn nhiều. Bạn sẽ không làm việc trong BẤT K version phiên bản Internet Explorer hoặc MS Edge <14.
bên dưới là mã đã cho sẽ chuyển đổi giây thành định dạng hh-mm-ss:
var measuredTime = new Date(null);
measuredTime.setSeconds(4995); // specify value of SECONDS
var MHSTime = measuredTime.toISOString().substr(11, 8);
Nhận phương pháp thay thế từ Chuyển đổi giây sang định dạng HH-MM-SS trong JavaScript
Đối với trường hợp đặc biệt của HH: MM: SS.MS (eq: "00: 04: 33.637") như FFMPEG sử dụng để chỉ định mili giây .
[-] [HH:] MM: SS [.m ...]
HH biểu thị số giờ, MM số phút cho tối đa 2 chữ số và SS số giây cho tối đa 2 chữ số. M ở cuối biểu thị giá trị thập phân cho SS.
/* HH:MM:SS.MS to (FLOAT)seconds ---------------*/
function timerToSec(timer){
let vtimer = timer.split(":")
let vhours = +vtimer[0]
let vminutes = +vtimer[1]
let vseconds = parseFloat(vtimer[2])
return vhours * 3600 + vminutes * 60 + vseconds
}
/* Seconds to (STRING)HH:MM:SS.MS --------------*/
function secToTimer(sec){
let o = new Date(0)
let p = new Date(sec*1000)
return new Date(p.getTime()-o.getTime())
.toISOString()
.split("T")[1]
.split("Z")[0]
}
/* Example: 7hours, 4 minutes, 33 seconds and 637 milliseconds */
const t = "07:04:33.637"
console.log(
t + " => " +
timerToSec(t) +
"s"
)
/* Test: 25473 seconds and 637 milliseconds */
const s = 25473.637 // "25473.637"
console.log(
s + "s => " +
secToTimer(s)
)
Ví dụ sử dụng, bộ đếm thời gian vận chuyển mili giây:
/* Seconds to (STRING)HH:MM:SS.MS --------------*/
function secToTimer(sec){
let o = new Date(0)
let p = new Date(sec*1000)
return new Date(p.getTime()-o.getTime())
.toISOString()
.split("T")[1]
.split("Z")[0]
}
let job, origin = new Date().getTime()
const timer = () => {
job = requestAnimationFrame(timer)
OUT.textContent = secToTimer((new Date().getTime() - origin) / 1000)
}
requestAnimationFrame(timer)
span {font-size:4rem}
<span id="OUT"></span>
<br>
<button onclick="origin = new Date().getTime()">RESET</button>
<button onclick="requestAnimationFrame(timer)">RESTART</button>
<button onclick="cancelAnimationFrame(job)">STOP</button>
Ví dụ sử dụng, liên kết với một yếu tố truyền thông
/* Seconds to (STRING)HH:MM:SS.MS --------------*/
function secToTimer(sec){
let o = new Date(0)
let p = new Date(sec*1000)
return new Date(p.getTime()-o.getTime())
.toISOString()
.split("T")[1]
.split("Z")[0]
}
VIDEO.addEventListener("timeupdate", function(e){
OUT.textContent = secToTimer(e.target.currentTime)
}, false)
span {font-size:4rem}
<span id="OUT"></span><br>
<video id="VIDEO" width="400" controls autoplay>
<source src="https://www.w3schools.com/html/mov_bbb.mp4" type="video/mp4">
</video>
Ngoài câu hỏi, các hàm được viết bằng php:
<?php
/* HH:MM:SS to (FLOAT)seconds ------------------*/
function timerToSec($timer){
$vtimer = explode(":",$timer);
$vhours = (int)$vtimer[0];
$vminutes = (int)$vtimer[1];
$vseconds = (float)$vtimer[2];
return $vhours * 3600 + $vminutes * 60 + $vseconds;
}
/* Seconds to (STRING)HH:MM:SS -----------------*/
function secToTimer($sec){
return explode(" ", date("H:i:s", $sec))[0];
}
+ "." + p.getMilliseconds()
chỉ bằng cách sử dụng new Date(p.getTime()-o.getTime()).toISOString().split("T")[1].split("Z")[0]
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.
}
}
Tôi chỉ muốn đưa ra một lời giải thích cho câu trả lời tốt đẹp ở trên:
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);
Trên dòng thứ hai, vì có 3600 giây trong 1 giờ, chúng tôi chia tổng số giây cho 3600 để có được tổng số giờ. Chúng tôi sử dụng parseInt để loại bỏ bất kỳ số thập phân. Nếu TotalSec là 12600 (3 giờ rưỡi), thì parseInt (TotalSec / 3600) sẽ trả về 3, vì chúng ta sẽ có 3 giờ đầy đủ. Tại sao chúng ta cần% 24 trong trường hợp này? Nếu chúng tôi vượt quá 24 giờ, giả sử chúng tôi có 25 giờ (90000 giây), thì modulo ở đây sẽ đưa chúng tôi trở lại 1 lần nữa, thay vì quay lại 25. Đó là giới hạn kết quả trong giới hạn 24 giờ, vì có 24 giờ một ngày nào đó.
Khi bạn thấy một cái gì đó như thế này:
25 % 24
Hãy nghĩ về nó như thế này:
25 mod 24 or what is the remainder when we divide 25 by 24
Tìm hiểu về chủ đề cũ này - OP đã nêu HH: MM: SS và nhiều giải pháp hoạt động, cho đến khi bạn nhận ra mình cần hơn 24 giờ được liệt kê. Và có lẽ bạn không muốn nhiều hơn một dòng mã. Ở đây bạn đi:
d=(s)=>{f=Math.floor;g=(n)=>('00'+n).slice(-2);return f(s/3600)+':'+g(f(s/60)%60)+':'+g(s%60)}
Nó trả về H +: MM: SS. Để sử dụng nó, chỉ cần sử dụng:
d(91260); // returns "25:21:00"
d(960); // returns "0:16:00"
... Tôi đã cố gắng để nó sử dụng ít mã nhất có thể, cho cách tiếp cận một lớp tốt.
Bạn đã thử thêm giây vào một đối tượng Date chưa?
var dt = new Date();
dt.addSeconds(1234);
Một mẫu: https://jsfiddle.net/j5g2p0dc/5/
Đã cập nhật: Liên kết mẫu bị thiếu nên tôi đã tạo một liên kết mới.
addSeconds
trên đối tượng Date như thế nào Date.prototype.addSeconds = function(seconds){...}
. Vâng, nó hoạt động, cảm ơn đã cập nhật.
Đây là một chức năng để chuyển đổi giây thành định dạng hh-mm-ss dựa trên câu trả lời của powtac tại đây
/**
* 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;
}
Ví dụ sử dụng
var seconds = SecondsTohhmmss(70);
console.log(seconds);
// logs 00-01-10
Sau khi xem tất cả các câu trả lời và không hài lòng với hầu hết trong số họ, đây là những gì tôi nghĩ ra. Tôi biết tôi đến cuộc trò chuyện rất muộn, nhưng dù sao thì đây cũng là một cuộc trò chuyện.
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;
}
Tôi tạo một đối tượng Ngày mới, thay đổi thời gian thành các tham số của mình, chuyển đổi Đối tượng Ngày thành chuỗi thời gian và xóa nội dung bổ sung bằng cách tách chuỗi và chỉ trả lại phần cần.
Tôi nghĩ rằng tôi sẽ chia sẻ cách tiếp cận này, vì nó loại bỏ nhu cầu về nhào lộn regex, logic và toán học để có được kết quả ở định dạng "HH: mm: ss", và thay vào đó nó dựa vào các phương thức được xây dựng.
Bạn có thể muốn xem tài liệu ở đây: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
Có rất nhiều tùy chọn để giải quyết vấn đề này, và rõ ràng có những lựa chọn tốt được đề xuất, nhưng tôi muốn thêm một mã được tối ưu hóa hơn ở đây
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(":");
}
nếu bạn không muốn định dạng 0 với ít hơn 10 số, bạn có thể sử dụng
function formatSeconds(sec) {
return parseInt(sec / 3600) + ':' + parseInt((sec % 3600) / 60) + ':' + parseInt((sec % 3600) % 60);
}
Mã mẫu http://fiddly.org/1c476/1
Trong một dòng, sử dụng giải pháp của TJ Crowder:
secToHHMMSS = seconds => `${Math.floor(seconds / 3600)}:${Math.floor((seconds % 3600) / 60)}:${Math.floor((seconds % 3600) % 60)}`
Trong một dòng, một giải pháp khác cũng tính ngày:
secToDHHMMSS = seconds => `${parseInt(seconds / 86400)}d ${new Date(seconds * 1000).toISOString().substr(11, 8)}`
Nguồn: https://gist.github.com/martinbean/2bf88c446be8048814cf02b2641ba276
var sec_to_hms = function(sec){
var min, hours;
sec = sec - (min = Math.floor(sec/60))*60;
min = min - (hours = Math.floor(min/60))*60;
return (hours?hours+':':'') + ((min+'').padStart(2, '0')) + ':'+ ((sec+'').padStart(2, '0'));
}
alert(sec_to_hms(2442542));
Bạn cũng có thể sử dụng mã dưới đây:
int ss = nDur%60;
nDur = nDur/60;
int mm = nDur%60;
int hh = nDur/60;
new Date().toString().split(" ")[4];
kết quả 15:08:03
Đối với bất kỳ ai sử dụng AngularJS, một giải pháp đơn giản là lọc giá trị bằng API ngày , chuyển đổi mili giây thành chuỗi dựa trên định dạng được yêu cầu. Thí dụ:
<div>Offer ends in {{ timeRemaining | date: 'HH:mm:ss' }}</div>
Lưu ý rằng điều này mong đợi một phần nghìn giây, vì vậy bạn có thể muốn nhân thời gian với 1000 nếu bạn chuyển đổi từ giây (vì câu hỏi ban đầu đã được hình thành).
Tôi gặp phải trường hợp một số người đã đề cập đến việc số giây nhiều hơn một ngày. Đây là phiên bản phù hợp của câu trả lời được xếp hạng hàng đầu của @Harish Anchu, chiếm thời gian dài hơn:
function secondsToTime(seconds) {
const arr = new Date(seconds * 1000).toISOString().substr(11, 8).split(':');
const days = Math.floor(seconds / 86400);
arr[0] = parseInt(arr[0], 10) + days * 24;
return arr.join(':');
}
Thí dụ:
secondsToTime(101596) // outputs '28:13:16' as opposed to '04:13:16'
String.prototype.toHHMMSS = function () {
var sec_num = parseInt(this, 10); // don't forget the second param
var hours = Math.floor(sec_num / 3600);
var minutes = Math.floor((sec_num - (hours * 3600)) / 60);
var seconds = sec_num - (hours * 3600) - (minutes * 60);
if (hours < 10) {hours = "0"+hours;}
if (minutes < 10) {minutes = "0"+minutes;}
if (seconds < 10) {seconds = "0"+seconds;}
return hours+':'+minutes+':'+seconds;
}
Ví dụ sử dụng
alert("186".toHHMMSS());
Không có câu trả lời nào ở đây thỏa mãn yêu cầu của tôi vì tôi muốn có thể xử lý
Mặc dù những điều đó không được OP yêu cầu, nhưng đó là cách thực hành tốt để bao quát các trường hợp cạnh, đặc biệt là khi mất ít công sức.
Một điều khá rõ ràng là OP có nghĩa là SỐ giây khi anh ta nói giây . Tại sao sẽ chốt chức năng của bạn trên String
?
function secondsToTimeSpan(seconds) {
const value = Math.abs(seconds);
const days = Math.floor(value / 1440);
const hours = Math.floor((value - (days * 1440)) / 3600);
const min = Math.floor((value - (days * 1440) - (hours * 3600)) / 60);
const sec = value - (days * 1440) - (hours * 3600) - (min * 60);
return `${seconds < 0 ? '-':''}${days > 0 ? days + '.':''}${hours < 10 ? '0' + hours:hours}:${min < 10 ? '0' + min:min}:${sec < 10 ? '0' + sec:sec}`
}
secondsToTimeSpan(0); // => 00:00:00
secondsToTimeSpan(1); // => 00:00:01
secondsToTimeSpan(1440); // => 1.00:00:00
secondsToTimeSpan(-1440); // => -1.00:00:00
secondsToTimeSpan(-1); // => -00:00:01
secondsToTimeSpan(8991)
trả về 6.00:05:51
trong khi tôi nghĩ nó sẽ trả về00:02:29:51
Tôi đã sử dụng mã này trước đây để tạo một đối tượng thời gian đơn giản:
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);