簡體   English   中英

將 12 小時制 hh:mm AM/PM 轉換為 24 小時制 hh:mm

[英]convert 12-hour hh:mm AM/PM to 24-hour hh:mm

有什么簡單的方法可以使用 jquery 將 12 小時 hh:mm AM/PM 轉換為 24 小時 hh:mm?

注意:不使用任何其他庫。

我有一個var time = $("#starttime").val()返回一個 hh:mm AM/PM。

試試這個

var time = $("#starttime").val();
var hours = Number(time.match(/^(\d+)/)[1]);
var minutes = Number(time.match(/:(\d+)/)[1]);
var AMPM = time.match(/\s(.*)$/)[1];
if(AMPM == "PM" && hours<12) hours = hours+12;
if(AMPM == "AM" && hours==12) hours = hours-12;
var sHours = hours.toString();
var sMinutes = minutes.toString();
if(hours<10) sHours = "0" + sHours;
if(minutes<10) sMinutes = "0" + sMinutes;
alert(sHours + ":" + sMinutes);

這個問題需要一個更新的答案:)

 const convertTime12to24 = (time12h) => { const [time, modifier] = time12h.split(' '); let [hours, minutes] = time.split(':'); if (hours === '12') { hours = '00'; } if (modifier === 'PM') { hours = parseInt(hours, 10) + 12; } return `${hours}:${minutes}`; } console.log(convertTime12to24('01:02 PM')); console.log(convertTime12to24('05:06 PM')); console.log(convertTime12to24('12:00 PM')); console.log(convertTime12to24('12:00 AM'));

我不得不做類似的事情,但我正在生成一個Date對象,所以我最終制作了一個這樣的函數:

function convertTo24Hour(time) {
    var hours = parseInt(time.substr(0, 2));
    if(time.indexOf('am') != -1 && hours == 12) {
        time = time.replace('12', '0');
    }
    if(time.indexOf('pm')  != -1 && hours < 12) {
        time = time.replace(hours, (hours + 12));
    }
    return time.replace(/(am|pm)/, '');
}

我覺得這讀起來容易一些。 您輸入格式為 h:mm am/pm 的字符串。

    var time = convertTo24Hour($("#starttime").val().toLowerCase());
    var date = new Date($("#startday").val() + ' ' + time);

例子:

        $("#startday").val('7/10/2013');

        $("#starttime").val('12:00am');
        new Date($("#startday").val() + ' ' + convertTo24Hour($("#starttime").val().toLowerCase()));
        Wed Jul 10 2013 00:00:00 GMT-0700 (PDT)

        $("#starttime").val('12:00pm');
        new Date($("#startday").val() + ' ' + convertTo24Hour($("#starttime").val().toLowerCase()));
        Wed Jul 10 2013 12:00:00 GMT-0700 (PDT)

        $("#starttime").val('1:00am');
        new Date($("#startday").val() + ' ' + convertTo24Hour($("#starttime").val().toLowerCase()));
        Wed Jul 10 2013 01:00:00 GMT-0700 (PDT)

        $("#starttime").val('12:12am');
        new Date($("#startday").val() + ' ' + convertTo24Hour($("#starttime").val().toLowerCase()));
        Wed Jul 10 2013 00:12:00 GMT-0700 (PDT)

        $("#starttime").val('3:12am');
        new Date($("#startday").val() + ' ' + convertTo24Hour($("#starttime").val().toLowerCase()));
        Wed Jul 10 2013 03:12:00 GMT-0700 (PDT)

        $("#starttime").val('9:12pm');
        new Date($("#startday").val() + ' ' + convertTo24Hour($("#starttime").val().toLowerCase()));
        Wed Jul 10 2013 21:12:00 GMT-0700 (PDT)

這將有助於:

 function getTwentyFourHourTime(amPmString) { 
        var d = new Date("1/1/2013 " + amPmString); 
        return d.getHours() + ':' + d.getMinutes(); 
    }

例子 :

getTwentyFourHourTime("8:45 PM"); // "20:45"
getTwentyFourHourTime("8:45 AM"); // "8:45"

更新:注意:“時間”和“上午/下午”之間應該有一個時間字符串的空格。

這里我的解決方案包括秒:

function convert_to_24h(time_str) {
    // Convert a string like 10:05:23 PM to 24h format, returns like [22,5,23]
    var time = time_str.match(/(\d+):(\d+):(\d+) (\w)/);
    var hours = Number(time[1]);
    var minutes = Number(time[2]);
    var seconds = Number(time[3]);
    var meridian = time[4].toLowerCase();

    if (meridian == 'p' && hours < 12) {
      hours += 12;
    }
    else if (meridian == 'a' && hours == 12) {
      hours -= 12;
    }
    return [hours, minutes, seconds];
  };

我需要一個項目的這個功能。 我嘗試了 devnull69,但遇到了一些問題,主要是因為字符串輸入非常特定於 am/pm 部分,我需要更改我的驗證。 我弄亂了 Adrian P. 的 jsfiddle,最終得到了一個似乎更適用於更多日期格式的版本。 這是小提琴: http : //jsfiddle.net/u91q8kmt/2/

這是函數:

function ConvertTimeformat(format, str) {
    var hours = Number(str.match(/^(\d+)/)[1]);
    var minutes = Number(str.match(/:(\d+)/)[1]);
    var AMPM = str.match(/\s?([AaPp][Mm]?)$/)[1];
    var pm = ['P', 'p', 'PM', 'pM', 'pm', 'Pm'];
    var am = ['A', 'a', 'AM', 'aM', 'am', 'Am'];
    if (pm.indexOf(AMPM) >= 0 && hours < 12) hours = hours + 12;
    if (am.indexOf(AMPM) >= 0 && hours == 12) hours = hours - 12;
    var sHours = hours.toString();
    var sMinutes = minutes.toString();
    if (hours < 10) sHours = "0" + sHours;
    if (minutes < 10) sMinutes = "0" + sMinutes;
    if (format == '0000') {
        return (sHours + sMinutes);
    } else if (format == '00:00') {
        return (sHours + ":" + sMinutes);
    } else {
        return false;
    }
}

我必須推薦一個圖書館:時刻

代碼:

var target12 = '2016-12-08 9:32:45 PM';
console.log(moment(target12, 'YYYY-MM-DD h:m:s A').format('YYYY-MM-DD HH:mm:ss'));
function timeConversion(s) {
  var time = s.toLowerCase().split(':');
  var hours = parseInt(time[0]);
  var _ampm = time[2];
  if (_ampm.indexOf('am') != -1 && hours == 12) {
    time[0] = '00';
  }
  if (_ampm.indexOf('pm')  != -1 && hours < 12) {
    time[0] = hours + 12;
  }
  return time.join(':').replace(/(am|pm)/, '');
}

使用字符串參數調用函數:

timeConversion('17:05:45AM')

要么

timeConversion('07:05:45PM')

如果您正在尋找將任何格式正確轉換為 24 小時 HH:MM 的解決方案。

function get24hTime(str){
    str = String(str).toLowerCase().replace(/\s/g, '');
    var has_am = str.indexOf('am') >= 0;
    var has_pm = str.indexOf('pm') >= 0;
    // first strip off the am/pm, leave it either hour or hour:minute
    str = str.replace('am', '').replace('pm', '');
    // if hour, convert to hour:00
    if (str.indexOf(':') < 0) str = str + ':00';
    // now it's hour:minute
    // we add am/pm back if striped out before 
    if (has_am) str += ' am';
    if (has_pm) str += ' pm';
    // now its either hour:minute, or hour:minute am/pm
    // put it in a date object, it will convert to 24 hours format for us 
    var d = new Date("1/1/2011 " + str);
    // make hours and minutes double digits
    var doubleDigits = function(n){
        return (parseInt(n) < 10) ? "0" + n : String(n);
    };
    return doubleDigits(d.getHours()) + ':' + doubleDigits(d.getMinutes());
}

console.log(get24hTime('6')); // 06:00
console.log(get24hTime('6am')); // 06:00
console.log(get24hTime('6pm')); // 18:00
console.log(get24hTime('6:11pm')); // 18:11
console.log(get24hTime('6:11')); // 06:11
console.log(get24hTime('18')); // 18:00
console.log(get24hTime('18:11')); // 18:11

有了它,您可以擁有以下內容:樣本輸入: 07 : 05 : 45PM樣本輸出: 19 : 05 : 45

function timeConversion(s) {
    let output = '';
    const timeSeparator = ':'
    const timeTokenType = s.substr(s.length - 2 , 2).toLowerCase();
    const timeArr = s.split(timeSeparator).map((timeToken) => {
    const isTimeTokenType = 
          timeToken.toLowerCase().indexOf('am') > 0 ||                                                                                               
           timeToken.toLowerCase().indexOf('pm');
        if(isTimeTokenType){
            return timeToken.substr(0, 2);
        } else {
            return timeToken;
        }
    });
    const hour = timeArr[0];
    const minutes = timeArr[1];
    const seconds = timeArr[2];
    const hourIn24 = (timeTokenType === 'am') ? parseInt(hour) - 12 : 
    parseInt(hour) + 12;
    return hourIn24.toString()+ timeSeparator + minutes + timeSeparator + seconds;
}

希望你喜歡 !

因為到目前為止所有的答案似乎都很冗長,所以這里有一個簡單的極簡解決方案:

 /* Convert h:mm a/p to H:mm * ie 12 hour time to 24 hour time * @param {string} time - h:mm a/p format * @returns {string} time in H:mm format */ function to24HrTime(time) { let [hr, min, ap] = time.toLowerCase().match(/\d+|[az]+/g) || []; return `${(hr % 12) + (ap == 'am'? 0: 12)}:${min}`; } ['9:02 am', '9:02 pm', '9:02am', '9:02pm', '12:15 AM', '12:01 PM', ].forEach(time => console.log(`${time} -> ${to24HrTime(time)}`));

假設輸入字符串具有合適的格式和值。 更強大的版本是:

 /* Given 12 hr time, return24 hr time * @param {string} time - time in format h:mm am/pm * h must be in range 1 to 12 * mm must be in range 00 to 59 * am/pm is not case sensitive * @returns {string} time in 24 hr format H:mm * H in range 0 to 23 * mm in range 00 to 59 * */ function to24HrTime(time = new Date().toLocaleString('en',{hour:'numeric', minute:'2-digit', hour12:true})) { let [hr, min, ap] = String(time).toLowerCase().match(/\d+|[az]+/g) || []; // If time is valid, return reformatted time // Otherwise return undefined return /^([1-9]|1[0-2]):[0-5]\d\s?(am|pm)/i.test(time)? `${(hr%12)+(ap=='am'?0:12)}:${min}`: void 0; } // Examples // Without arguments console.log(`No args -> ${to24HrTime()}`); // Valid input ['9:02 am', '9:02 pm', '9:02am', '9:02pm', '12:15 AM', '12:01 PM', // Invalid input '12', // Missing mins & ap '99:05 am', // hrs out of range '0:05 am', // hrs out of range '9:60 am', // mins out of range '9:09 pp', // ap out of range {}, // Random object ].forEach(time => console.log(`${time} -> ${to24HrTime(time)}`));

基於滿足CodeSkill #1

格式驗證應該是另一個功能:)

 function convertTimeFrom12To24(timeStr) { var colon = timeStr.indexOf(':'); var hours = timeStr.substr(0, colon), minutes = timeStr.substr(colon+1, 2), meridian = timeStr.substr(colon+4, 2).toUpperCase(); var hoursInt = parseInt(hours, 10), offset = meridian == 'PM' ? 12 : 0; if (hoursInt === 12) { hoursInt = offset; } else { hoursInt += offset; } return hoursInt + ":" + minutes; } console.log(convertTimeFrom12To24("12:00 AM")); console.log(convertTimeFrom12To24("12:00 PM")); console.log(convertTimeFrom12To24("11:00 AM")); console.log(convertTimeFrom12To24("01:00 AM")); console.log(convertTimeFrom12To24("01:00 PM"));

對於將來閱讀本文的任何人,這里有一個更簡單的答案:

var s = "11:41:02PM";
var time = s.match(/\d{2}/g);
if (time[0] === "12") time[0] = "00";
if (s.indexOf("PM") > -1) time[0] = parseInt(time[0])+12;
return time.join(":");

@krzysztof 答案的擴展版本,能夠在時間和修飾符之間有空間或沒有空間的時間工作。

const convertTime12to24 = (time12h) => {
      const [fullMatch, time, modifier] = time12h.match(/(\d?\d:\d\d)\s*(\w{2})/i);

      let [hours, minutes] = time.split(':');

      if (hours === '12') {
        hours = '00';
      }

      if (modifier === 'PM') {
        hours = parseInt(hours, 10) + 12;
      }

      return `${hours}:${minutes}`;
    }

    console.log(convertTime12to24('01:02 PM'));
    console.log(convertTime12to24('05:06 PM'));
    console.log(convertTime12to24('12:00 PM'));
    console.log(convertTime12to24('12:00 AM'));

將 AM/PM 時間字符串轉換為 24 小時格式。 示例 晚上 9:30 至 21:30

function get24HrsFrmAMPM(timeStr) {
    if (timeStr && timeStr.indexOf(' ') !== -1 && timeStr.indexOf(':') !== -1) {
        var hrs = 0;
        var tempAry = timeStr.split(' ');
        var hrsMinAry = tempAry[0].split(':');
        hrs = parseInt(hrsMinAry[0], 10);
        if ((tempAry[1] == 'AM' || tempAry[1] == 'am') && hrs == 12) {
            hrs = 0;
        } else if ((tempAry[1] == 'PM' || tempAry[1] == 'pm') && hrs != 12) {
            hrs += 12;
        }
        return ('0' + hrs).slice(-2) + ':' + ('0' + parseInt(hrsMinAry[1], 10)).slice(-2);
    } else {
        return null;
    }
}

我已經對提交的腳本@devnull69 進行了一些改編。 我覺得對於我的應用程序,它會更有用,因為它會返回我可以返回的值,然后用作變量。

HTML

<input type="text" id="time_field" />
<button>Submit</submit>

jQuery

$(document).ready(function() {

    function convertTime(time) {

        var hours = Number(time.match(/^(\d\d?)/)[1]);
        var minutes = Number(time.match(/:(\d\d?)/)[1]);
        var AMPM = time.match(/\s(AM|PM)$/i)[1];

        if((AMPM == 'PM' || AMPM == 'pm') && hours < 12) {
            hours = hours + 12;
        }
        else if((AMPM == 'AM' || AMPM == "am") && hours == 12) {
            hours = hours - 12;
        }

        var sHours = hours.toString();
        var sMinutes = minutes.toString();

        if(hours < 10) {
            sHours = "0" + sHours;
        }
        else if(minutes < 10) {
             sMinutes = "0" + sMinutes;
        }

        return sHours + ":" + sMinutes;

    }

    $('button').click(function() {
        alert(convertTime($('#time_field').val()));
    });

});
  function getDisplayDatetime() {
    var d = new Date("February 04, 2011 19:00"),
     hh = d.getHours(),  mm = d.getMinutes(),  dd = "AM", h = hh;
    mm=(mm.toString().length == 1)? mm = "0" + mm:mm;
    h=(h>=12)?hh-12:h;
     dd=(hh>=12)?"PM":"AM";
    h=(h == 0)?12:h;
    var textvalue=document.getElementById("txt");
    textvalue.value=h + ":" + mm + " " + dd;
}

</script>
</head>
<body>
<input type="button" value="click" onclick="getDisplayDatetime()">
<input type="text" id="txt"/>
dateFormat.masks.armyTime= 'HH:MM';

now.format("armyTime");
function convertTo24Hour(time) {
    time = time.toUpperCase();
    var hours = parseInt(time.substr(0, 2));
    if(time.indexOf('AM') != -1 && hours == 12) {
        time = time.replace('12', '0');
    }
    if(time.indexOf('PM')  != -1 && hours < 12) {
        time = time.replace(hours, (hours + 12));
    }
    return time.replace(/(AM|PM)/, '');
}
date --date="2:00:01 PM" +%T
14:00:01

date --date="2:00 PM" +%T | cut -d':' -f1-2
14:00

var="2:00:02 PM"
date --date="$var" +%T
14:00:02

你可以試試這個更通用的函數:

function from12to24(hours, minutes, meridian) {
  let h = parseInt(hours, 10);
  const m = parseInt(minutes, 10);
  if (meridian.toUpperCase() === 'PM') {
    h = (h !== 12) ? h + 12 : h;
  } else {
    h = (h === 12) ? 0 : h;
  }
  return new Date((new Date()).setHours(h,m,0,0));
}   

請注意,它使用了一些 ES6 功能。

 var time = "9:09:59AM"
    var pmCheck =time.includes("PM");
    var hrs=parseInt(time.split(":")[0]);
    var newtime='';
    // this is for between  12 AM to 12:59:59AM  = 00:00:00
    if( hrs == 12  && pmCheck == false){
        newtime= "00" +':'+ time.split(":")[1] +':'+ time.split(":")[2].replace("AM",'');
        }
    //this is for between  12 PM to 12:59:59 =12:00:00
    else if (hrs == 12  && pmCheck == true){
             newtime= "12" +':'+ time.split(":")[1] +':'+ time.split(":")[2].replace("PM",'');
    }
    //this is for between 1 AM and 11:59:59 AM
    else if (!pmCheck){
        newtime= hrs +':'+ time.split(":")[1] +':'+ time.split(":")[2].replace("AM",'');
    }
    //this is for between 1 PM and 11:59:59 PM
    else if(pmCheck){
        newtime= (hrs +12)+':'+ time.split(":")[1] +':'+ time.split(":")[2].replace("PM",'');
    }
    console.log(newtime);

用於實時計算時間子午線的單一且簡單的 js 函數

JS

   function convertTime24to12(time24h) {
                var timex = time24h.split(':');

                if(timex[0] !== undefined && timex [1] !== undefined)
                 {
                     var hor = parseInt(timex[0]) > 12 ? (parseInt(timex[0])-12) : timex[0] ;
                     var minu = timex[1];
                     var merid = parseInt(timex[0]) < 12 ? 'AM' : 'PM';

                     var res = hor+':'+minu+' '+merid;

                     document.getElementById('timeMeridian').innerHTML=res.toString();
                 }
            }

html

 <label for="end-time">Hour <i id="timeMeridian"></i> </label>
            <input type="time" name="hora" placeholder="Hora" id="end-time" class="form-control" onkeyup="convertTime24to12(this.value)">

基於@krzysztof-dąbrowski 的回答的打字稿解決方案

export interface HoursMinutes {
  hours: number;
  minutes: number;
}
export function convert12to24(time12h: string): HoursMinutes {
  const [time, modifier] = time12h.split(' ');
  let [hours, minutes] = time.split(':');

  if (hours === '12') {
    hours = '00';
  }

  if (minutes.length === 1) {
    minutes = `0${minutes}`;
  }

  if (modifier.toUpperCase() === 'PM') {
    hours = parseInt(hours, 10) + 12 + '';
  }

  return {
    hours: parseInt(hours, 10),
    minutes: parseInt(minutes, 10)
  };
}

已針對所有用例進行測試

function timeConversion(s) {
let h24;
let m24;
let sec24;

const splittedDate = s.split(":");
const h = parseInt(splittedDate[0], 10);
const m = parseInt(splittedDate[1], 10);
const sec = parseInt(splittedDate[2][0] + splittedDate[2][1], 10); 
const meridiem = splittedDate[2][2] + splittedDate[2][3];

if (meridiem === "AM") {
    if (h === 12) {
        h24 = '00';
    } else {
        h24 = h;
        if (h24 < 10) {
            h24 = '0' + h24;
        }
    }
    m24 = m;
    sec24 = sec;
} else if (meridiem === "PM") {
    if (h === 12) {
        h24 = h
    } else {
        h24 = h + 12;
        if (h24 < 10) {
            h24 = '0' + h24;
        }
    }
    m24 = m;
    sec24 = sec;
}


if (m24 < 10) {
    m24 = '0' + m24; 
} 

if (sec24 < 10) {
    sec24 = '0' + sec24;
}

  return h24 + ":" + m24 + ":" + sec24; 
}

這是 jsfiddle 工作示例

 convertTime12to24 = (time12h) => { const [time, modifier] = time12h.split(' '); let [hours, minutes] = time.split(':'); (hours === '12' ? hours = '00' : ((modifier === 'PM' || modifier === 'pm') ? hours = parseInt(hours, 10) + 12 : "")); return `${hours}:${minutes}`; } console.log(convertTime12to24('06:30 pm'));
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

簡短的 ES6 代碼

const convertFrom12To24Format = (time12) => {
  const [sHours, minutes, period] = time12.match(/([0-9]{1,2}):([0-9]{2}) (AM|PM)/).slice(1);
  const PM = period === 'PM';
  const hours = (+sHours % 12) + (PM ? 12 : 0);

  return `${('0' + hours).slice(-2)}:${minutes}`;
}
const convertFrom24To12Format = (time24) => {
  const [sHours, minutes] = time24.match(/([0-9]{1,2}):([0-9]{2})/).slice(1);
  const period = +sHours < 12 ? 'AM' : 'PM';
  const hours = +sHours % 12 || 12;

  return `${hours}:${minutes} ${period}`;
}

我剛剛在 HackerRank 上解決了這個問題,所以我在這里分享我的結果

function timeConversion(s) {
    const isPM = s.indexOf('PM') !== -1;
    let [hours, minutes, seconds] = s.replace(isPM ? 'PM':'AM', '').split(':');

    if (isPM) {
        hours = parseInt(hours, 10) + 12;
        hours = hours === 24 ? 12 : hours;
    } else {
        hours = parseInt(hours, 10);
        hours = hours === 12 ? 0 : hours;
        if (String(hours).length === 1) hours = '0' + hours;
    }

    const time = [hours, minutes, seconds].join(':');

    return time;
}

這適用於06:40:03AM類的輸入。

有沒有簡單的方法可以使用jquery將12小時hh:mm AM / PM轉換為24小時hh:mm?

注意:不使用任何其他庫。

我有一個var time = $("#starttime").val() ,返回hh:mm AM / PM。

 function formatto24(date) { let ampm = date.split(" ")[1]; let time = date.split(" ")[0]; if (ampm == "PM") { let hours = time.split(":")[0]; let minutes = time.split(":")[1]; let seconds = time.split(":")[2]; let hours24 = JSON.parse(hours) + 12; return hours24 + ":" + minutes + ":" + seconds; } else { return time; } }

有沒有簡單的方法可以使用jquery將12小時hh:mm AM / PM轉換為24小時hh:mm?

注意:不使用任何其他庫。

我有一個var time = $("#starttime").val() ,返回hh:mm AM / PM。

這就是我如何實現這一點:

function timeConversion(s) {
    // Write your code here
   const arr =s.split(":")
   const isAM = arr[2].includes("AM")
   if(isAM) {
      arr[0]=arr[0].padStart(2, '0');
      arr[2]=arr[2].replace("AM","");  
        if(arr[0]==="12")  arr[0] ="00"
           
    }else{
        arr[0]=(+arr[0]+12).toString();
        arr[2]=arr[2].replace("PM","");  
        if(arr[0]==="24")  arr[0] ="12"
    }
   return(arr.join(":"))
}

我發現這是最簡單的方法。 以下是有關正在發生的事情的分步說明:

  1. 您以 12 小時格式獲取時間

  2. 按時間戳和子午線分割時間

  3. 如果是午夜,則在前面加上00否則只打印時間戳

  4. 如果是中午,只需打印時間戳,否則將小時添加12

function timeConversion(s) {
    // 07:05:45PM
    const timeInAmPmArray = s.split(/(AM|PM)/) // ['07:05:45', 'PM', '']
    const hour = Number(timeInAmPmArray[0].split(':')[0]) // 7
    const amOrPm = timeInAmPmArray[1] // PM
    let timeIn24Hour = ''
    if(amOrPm === 'AM') {
      timeIn24Hour = hour === 12 ? `00:${timeInAmPmArray[0].split(':').slice(1).join(':')}` : timeInAmPmArray[0]
    } else {
      timeIn24Hour = hour === 12 ? timeInAmPmArray[0] : `${hour + 12}:${timeInAmPmArray[0].split(':').slice(1).join(':')}`
      // timeIn24Hour = 19:05:45
    }
    return timeIn24Hour
}
    
timeConversion('07:05:45PM')

這是對我有用的蠻力解決方案

const time = '11:8AM';

function convertTo24HrsFormat(time) {
    // write your solution here
    let timeWithPM = time.endsWith("PM");
    
    if (time.includes('P')) {
        let minuteVal = time.slice(time.indexOf(':')+1, time.indexOf('P'));
      
      if(minuteVal.length === 1) {
        minuteVal = `0${minuteVal}`;
        let result = time.slice(0, time.indexOf(':'));
        time = `${result}:${minuteVal}PM`;
        console.log("CHECKING123====>>>>", time);
      }
    } 
    
    if (time.includes('A')) {
        let minuteVal = time.slice(time.indexOf(':')+1, time.indexOf('A'));
      if(minuteVal.length === 1) {
        minuteVal = `0${minuteVal}`;
        let result = time.slice(0, time.indexOf(':'));
        time = `${result}:${minuteVal}AM`;
      }
    } 
        

    if(timeWithPM) {
        let result = findHour(time);
        return result;
    }

    if(!timeWithPM) {
        let result = withAM(time);
        return result;
    }

    return;
}

function findHour(time) {
    let hour = time.slice(0, time.indexOf(':'));
    if(parseInt(hour) < 12)
        hour = parseInt(hour)+12;
    if (hour.toString().length === 1)
        hour = `0${hour}`;
    let removeHourWithPM = time.split(":").pop();
    removeHourWithPM = `${hour}:${removeHourWithPM}`;
    // console.log("CHECKING-----",hour);
    return removeHourWithPM.slice(0, -2);
}

function withAM(time) {

        let isTwelve = time.slice(0, time.indexOf(':'));
    if(isTwelve == '12') {
        let get12 = time.split(':').pop();
        let result = get12.slice(0, -2);
        return `00:${result}`
    }
    
        let hour = time.slice(0, time.indexOf(':'));
    if(hour.length === 1) {
        hour = `0${hour}`;
      let removeHourWithSingledigit = time.split(":").pop();
      removeHourWithSingledigit = `${hour}:${removeHourWithSingledigit}`;
      return removeHourWithSingledigit.slice(0, -2);
    }
    
    return time.slice(0, -2);
}

console.log(`Converted time: ${convertTo24HrsFormat(time)}`)
function timeConversion(amPmStr = '') {
    const time = amPmStr.replace(/(AM|PM|am|pm)/, (match) => ' ' + match);
    const randomDate = "September 25, 2018 ";
    const date = new Date(randomDate + time);
    const hours = date.getHours().toString().padStart(2, '0');
    const mins = date.getMinutes().toString().padStart(2, '0');
    const secs = date.getSeconds().toString().padStart(2, '0');
    return hours + ":" + mins + ":" + secs;
}

我正在添加一個簡單的代碼 -

    const time = '12:10AM';

    function convertTo24HrsFormat(time) {
    let [hour, modifier] = time.split(":");
    let min = parseInt(modifier).toString().padStart(2, '0');
    let index = modifier.toLowerCase().indexOf('m');
    let meridian = modifier.slice(index - 1);
    hour = parseInt(hour);
    
    if(hour === 12){
        hour =  00;
    }

    if(meridian == 'PM'){
        hour = hour + 12;
    }

    hour = hour.toString().padStart(2, '0');


    let time24hr = `${hour}:${min}`;

    return time24hr;
}

console.log(`Converted time: ${convertTo24HrsFormat(time)}`);

一個經過良好測試的方法:

// example, s = 12:34:56PM
function timeConversion(s) {
    let designator, clock, hhmmss, hh, mm, ss, mil; // declare variables
    designator = s.slice(-2); // returns AM or PM
    hhmmss = s.substring(0, s.length-2) // returns hh:mm:ss
    clock = hhmmss.split(':'); // returns array of [hh,mm,ss]
    hh = designator === 'AM' 
       ? (parseInt(clock[0]) === 12 ? '00' : clock[0]) 
       : (parseInt(clock[0]) === 12 ? '12' : parseInt(clock[0]) + 12);
    mm = clock[1];
    ss = clock[2];
    mil = [hh,mm,ss].join(':').toString();
    return mil

}

//here is my solution.
function timeConversion(s) {
        // Write your code here
        let amPM = s.indexOf('AM') !== -1 ? 'AM' : 'PM';
        let tString = s.toString().replace(/AM|PM/gi,'');
        let splitTime = tString.split(':');
        let h = splitTime[0];
        let m = splitTime[1];
        let sec = splitTime[2];
        let twntyfr = amPM === 'PM' && parseInt(h) !== 12 ? parseInt(h)+12 : h;
        if(parseInt(twntyfr) === 12 && amPM === 'AM') twntyfr = '00';
        return twntyfr+':'+m+':'+sec;
    }

HackerRank時間轉換解決方案

12 小時 AM/PM 格式,軍用(24 小時)時間

function timeConversion(s) {
    let time = 0
    let hour = s.slice(0, 2)
    let toD = s.slice(-2)
    
    if(toD === 'AM' && hour == 12){
        time = `00${s.slice(2, s.length -2)}`
    }else{
        if(toD === 'PM' && hour < 12){
            time = `${Number(12 + parseInt(hour))}${s.slice(2, s.length - 2)}`
        }else{
            time = s.slice(0, s.length - 2)
        }
    }
    
    return time
}

timeConversion('12:00:17AM') // 00:00:17
timeConversion('09:21:33PM') // 21:21:33
timeConversion('12:43:53PM') // 12:43:53

這是我的解決方案,使用正則表達式進行拆分。 簡單而簡短:

convert24To12(time){
    let [hours, minutes, modifier] = time.split(/ |:/);
    if (modifier === 'PM') {
        hours = `${parseInt(hours, 10) + 12}`;      
    }
    time = `${hours}:${minutes}`;
    return time;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM