12시간 hh:mm AM/PM을 24시간 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'));
이를 통해 다음과 같은 이점을 얻을 수 있습니다.
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"
업데이트 : 참고 : "Time"과 "am/pm" 사이에 타임스트링을 위한 공간이 있어야 합니다.
저도 비슷한 일을 해야 하는데 제가 지금.Date
object 그래서 저는 결국 다음과 같은 기능을 만들었습니다.
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 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];
};
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')
나는 도서관을 추천해야만 합니다: 모먼트
코드:
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'));
앞으로 이 글을 읽는 모든 사람들을 위해, 다음과 같은 간단한 답이 있습니다.
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(":");
모든 포맷을 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
시간과 수정자 사이에 공백이 있거나 없는 시간에 작업할 수 있는 기능이 있는 @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'));
저는 프로젝트를 위해 이 기능이 필요했습니다.저는 devnull69를 시도했지만 대부분 문자열 입력이 오전/오후 섹션에 매우 구체적이어서 유효성 검사를 변경해야 했기 때문에 문제가 있었습니다.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;
}
}
이것으로 당신은 다음을 가질 수 있습니다: 샘플 입력: 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
* i.e. 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+|[a-z]+/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+|[a-z]+/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)}`));
jQuery에서 Moment.js를 사용하여 시간을 12시간 형식에서 24시간 형식으로 변환하려면 다음과 같이 하십시오.
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>
<script>
$(document).ready(function() {
const time12 = '02:30 PM'; // Replace this with your 12-hour time string
const time24 = moment(time12, 'hh:mm A').format('HH:mm');
console.log(time24);
});
</script>
코드의 '02:30 PM'을 원하는 12시간의 시간 문자열로 대체합니다.이 스크립트를 실행하면 변환된 시간이 24시간 형식으로 출력됩니다.
이 코드를 실행하기 전에 HTML 파일에 jQuery와 Moment.js 라이브러리를 포함해야 합니다.Moment.js를 포함하는 방법과 유사하게 jQuery를 포함할 수 있습니다.
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
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"));
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;
}
}
//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;
}
해커 랭크 시간 변환 솔루션
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 console.log(time)
}
timeConversion('12:00:17AM') // 00:00:17
timeConversion('09:21:33PM') // 21:21:33
timeConversion('12:43:53PM') // 12:43:53
한 줄의 코드에서 12시간 형식에서 24시간 형식으로 시간을 변환하려면 JavaScript에서 Date 객체를 사용할 수 있습니다.
const time12to24 = (time12) => new Date(`2023-07-27 ${time12}`).toLocaleTimeString('en-US', { hour12: false });
이 함수 time12~24를 사용하여 12시간 형식의 시간 문자열을 24시간 형식의 시간 문자열로 변환할 수 있습니다.
console.log(time12to24('02:30 PM')); // Output: "14:30:00"
console.log(time12to24('10:45 AM')); // Output: "10:45:00"
이 코드는 현재 날짜를 "2023-07-27"로 가정하고 있으며, 이는 시간 파싱에 사용됩니다.함수는 시간을 "" 형식으로 반환합니다.HH:mm:ss"(시간, 분, 초)입니다.
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 기능을 사용합니다.
스크립트 @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()));
});
});
실시간으로 계산 시간 자오선을 위한 싱글 및 이지 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;
}
쇼트 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}`;
}
방금 해커랭크에서 이 문제를 해결해서 결과를 공유하러 왔습니다.
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
.
언급URL : https://stackoverflow.com/questions/15083548/convert-12-hour-hhmm-am-pm-to-24-hour-hhmm
'programing' 카테고리의 다른 글
copy-item With Alternate Credentials (0) | 2023.09.18 |
---|---|
(설명을 사용하지 않고) 소유하지 않은 오라클 테이블에서 칼럼 정보를 가져오는 방법? (0) | 2023.09.18 |
Angularjs $http가 응답에서 "Set-Cookie"를 이해하지 못하는 것 같습니다. (0) | 2023.09.18 |
그룹없이 세다 (0) | 2023.09.18 |
mysql 대비 neo4j 성능 (어떻게 개선할 수 있습니까?) (0) | 2023.09.18 |