我有这个测试:
function padZero(string){
return ("00" + string).slice(-2);
}
function toReadableString(time) {
var hrs = ~~(time / 3600 % 24),
mins = ~~((time % 3600) / 60),
timeType = (hrs>11?"PM":"AM");
return hrs + ":" + padZero(mins) + timeType;
}
我的解决方案是:
csv
但大多数测试用例都失败了。测试用例是隐藏的,所以我不知道为什么我没有通过测试。我已经尝试了大多数我能想到的测试用例。任何想法我的解决方案有什么问题?
答案 0 :(得分:1)
您的营业时间介于0到24之间(其中0和24实际上是凌晨12:00)
function toReadableString(time) {
if (time < 0)
time = 0;
var hrs = ~~(time / 3600 % 24),
mins = ~~((time % 3600) / 60),
timeType = (hrs > 11 ? "PM" : "AM");
if (hrs > 12)
hrs = hrs - 12;
if (hrs == 0)
hrs = 12;
return hrs + ":" + padZero(mins) + timeType;
}
答案 1 :(得分:0)
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;
}
您现在可以使用它:
alert("5678".toHHMMSS());
答案 2 :(得分:0)
获得时间的另一种解决方案
var time = convertToTime(3600);
alert(time);
function convertToTime(seconds){
var d = new Date(0, 0, 0, 0, 0, seconds, 0);
var hour = d.getHours();
var minute = d.getMinutes();
var amPM = (hour > 11) ? " PM" : " AM";
hour = hour>12?hour-12:hour==0?12:hour;
minute = minute < 10 ?"0" + minute :minute;
return hour + ":" + minute + amPM;
}