我正在尝试将java代码写入javascript。
public static String generateTimeRange( start, end) {
return String.format("%02d:%02d-%02d:%02d", start / 60, start % 60, end / 60, end % 60);
}
基本上这将返回00:10 - 00:20的时间(如果10和20是参数)
我想在javascript中编写相同的函数但是很难。有人可以帮忙吗?
function generateTimeRange( start, end) {
return String.format("{0}:{1}-{2}:{3}", start / 60, start % 60, end / 60, end % 60);
}
由于javascript没有String.format,我使用了以下代码:
if (!String.format) {
String.format = function(format) {
var args = Array.prototype.slice.call(arguments, 1);
return format.replace(/{(\d+)}/g, function(match, number) {
return typeof args[number] != 'undefined'
? args[number]
: match
;
});
};
}
但有点打印以下
generateTimeRange(10,20);
"0.16666666666666666:10-0.3333333333333333:20"
看起来我没有做%02d。我如何在javascript中执行此操作?
由于
答案 0 :(得分:1)
javascript es6引入了可以解决问题的字符串模板。
function _pad(_n, width) {
const z = '0';
const n = _n + '';
return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n
}
function formatTime(start, end) {
const minStart = _pad(parseInt(start / 60), 2)
const secStart = _pad(start % 60, 2)
const minEnd = _pad(parseInt(end / 60), 2)
const secEnd = _pad(end % 60, 2)
return `${minStart}:${secStart}-${minEnd}:${secEnd}`
}
console.log(formatTime(100, 120)) // 01:40-02:00
console.log(formatTime(60, 61)) // 01:00-01:01
答案 1 :(得分:1)
您可以只返回一个连接字符串,或者可以使用http://site.mockito.org/mockito/docs/current/org/mockito/stubbing/Answer.html
执行此操作
function generateTimeRange(start, end) {
return Math.floor(start / 60) + ":" + Math.floor(start % 60) + "-" + Math.floor(end / 60) + ":" + Math.floor(end % 60);
}
function generateTimeRangeInterpolation(start, end) {
var sPrefix = Math.floor(start / 60),
start = Math.floor(start % 60),
ePrefix = Math.floor(end / 60),
end = Math.floor(end % 60);
return `${sPrefix}:${start}-${ePrefix}:${end}`
}
console.log(generateTimeRange(10, 20));
console.log(generateTimeRangeInterpolation(10, 20));
答案 2 :(得分:1)
填充零,对吗?我从这个post
中使用了这个
String.prototype.zer0Pad = function(pad, siz) {
var str = this;
var len = parseInt(siz, 10);
while (str.length < len) {
str = pad + str;
}
return str;
}
var number = '7';
var digits = '2';
var padding = '0';
var result1 = number.zer0Pad(padding, digits);
var string = '42';
var result2 = string.zer0Pad(0, 4);
console.log('result1: ' + result1 + '\nresult2: ' + result2);
答案 3 :(得分:0)
我猜问题会改变如何制作固定长度的数字。 你可以使用substr:
function(num) {
( "00" + parseInt(num)).substr(-2);
}