Javascript整数到时间字符串

时间:2017-07-20 06:18:11

标签: javascript time

我有这个测试:

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

但大多数测试用例都失败了。测试用例是隐藏的,所以我不知道为什么我没有通过测试。我已经尝试了大多数我能想到的测试用例。任何想法我的解决方案有什么问题?

3 个答案:

答案 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;
}