답변:
당신은 당신이 설정할 수있는 이 페이지 를 기반으로 옵션을 설정할 수 있습니다.
var dateWithouthSecond = new Date();
dateWithouthSecond.toLocaleTimeString([], {hour: '2-digit', minute:'2-digit'});
Firefox, Chrome, IE9 + 및 Opera에서 지원됩니다. 웹 브라우저 콘솔에서 사용해보십시오.
hour: "2-digit"
크롬 42도 FF (37) --- 나를 위해 작동하지 d = new Date(1429524912495).toLocaleTimeString('en-US', {hour: '2-digit', minute: '2-digit', hour12: true})
수익률 "6:15 AM"
모두있다.
[]
특정 로케일을 제외하는 데 사용 합니다. 그렇게하면 사용자 로캘에 머물 수 있습니다 :toLocaleTimeString([], {hour: '2-digit', minute: '2-digit'}
new Date().toLocaleTimeString([], {hour: '2-digit', minute:'2-digit', hour12: false}); "17:08"
이것은 나를 위해 작동합니다 :
var date = new Date();
var string = date.toLocaleTimeString([], {timeStyle: 'short'});
Date.prototype.toLocaleString 에 의해 반환되는 값 은 구현에 따라 달라 지므로 얻을 수있는 것을 얻습니다. 문자열을 구문 분석하여 초를 제거하려고 시도 할 수 있지만 브라우저마다 다를 수 있으므로 사용중인 모든 브라우저에 대해 허용해야합니다.
Date 메서드를 사용하여 자신 만의 명확한 형식을 만드는 것은 어렵지 않습니다. 예를 들면 다음과 같습니다.
function formatTimeHHMMA(d) {
function z(n){return (n<10?'0':'')+n}
var h = d.getHours();
return (h%12 || 12) + ':' + z(d.getMinutes()) + ' ' + (h<12? 'AM' :'PM');
}
나는 또한이 문제에 대한 해결책을 찾고 있었고, 결국 내가 생각해 낸 것입니다.
function getTimeStr() {
var dt = new Date();
var d = dt.toLocaleDateString();
var t = dt.toLocaleTimeString();
t = t.replace(/\u200E/g, '');
t = t.replace(/^([^\d]*\d{1,2}:\d{1,2}):\d{1,2}([^\d]*)$/, '$1$2');
var result = d + ' ' + t;
return result;
}
http://jsfiddle.net/B5Zrx/에서 시도해보십시오.
\ u200E는 일부 IE 버전에서 보았던 일부 서식 문자입니다 (유니 코드는 왼쪽에서 오른쪽으로 표시합니다).
형식화 된 시간에 "XX : XX : XX"와 같은 것이 포함되어 있으면 초 단위의 시간이어야하고 마지막 부분을 제거합니다.이 패턴을 찾지 못하면 아무것도 변경되지 않습니다. 꽤 안전하지만 이상한 환경에서는 몇 초가 남을 위험이 있습니다.
형식화 된 시간 부분의 순서를 변경할 로케일이 없기를 바랍니다 (예 : ss : mm : hh). 이 왼쪽에서 오른쪽 표시는 나를 조금 긴장하게 만듭니다. 그래서 오른쪽에서 왼쪽 표시를 제거하지 않습니다 (\ u202E)-이 경우 일치하는 것을 찾지 않고 이 경우 초 형식의 시간.
toLocaleTimeString()
모든 로케일에 해당되지 않는 리턴 에 대해 많은 가정을 합니다.
이를 설명하는 주석과 함께 수행 할 함수는 다음과 같습니다.
function displayNiceTime(date){
// getHours returns the hours in local time zone from 0 to 23
var hours = date.getHours()
// getMinutes returns the minutes in local time zone from 0 to 59
var minutes = date.getMinutes()
var meridiem = " AM"
// convert to 12-hour time format
if (hours > 12) {
hours = hours - 12
meridiem = ' PM'
}
else if (hours === 0){
hours = 12
}
// minutes should always be two digits long
if (minutes < 10) {
minutes = "0" + minutes.toString()
}
return hours + ':' + minutes + meridiem
}
다른 사람들이 지적했듯이 toLocaleTimeString ()은 다른 브라우저에서 다르게 구현 될 수 있으므로이 방법으로 더 나은 제어를 제공합니다.
Javascript Date 객체에 대한 자세한 내용은 다음 리소스를 참조하십시오 . https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
원래 질문은 지금까지 간과 된 것으로 쉽게 대답 할 수 있다고 생각합니다 : 간단한 문자열 분할. 반환되는 시간은 텍스트 문자열입니다. ":"구분 기호로 나누고 원하는 방식으로 문자열을 다시 어셈블하십시오. 플러그인, 복잡한 스크립팅 없음 그리고 여기에 간다 :
var myVar=setInterval(function(){myTimer()},1000);
function myTimer() {
var d = new Date();
currentNow = d.toLocaleTimeString();
nowArray = currentNow.split(':');
filteredNow = nowArray[0]+':'+nowArray[1];
document.getElementById("demo").innerHTML = filteredNow;
}
이것은 오래된 질문이지만 최근에 같은 질문을 받았으며 정규 표현식과 문자열 대체 기능을 다른 대안으로 사용하는보다 간단한 솔루션을 찾았습니다 (외부 js 라이브러리가 필요하지 않거나 ECMAScript 내부화 API에 의존하지 않음) :
var d = new Date();
var localeTime = d.toLocaleTimeString();
var localeTimeSansSeconds = localeTime.replace(/:(\d{2}) (?=[AP]M)/, " ");
이 접근법은 정규 표현식 미리보기를 사용하여 문자열의 : ss AM / PM 끝을 잡고 : ss 부분을 공백으로 바꾸고 나머지 문자열은 그대로 유지합니다. (문자 그대로 "두 자리 숫자와 공백이있는 콜론을 찾은 다음 AM 또는 PM 뒤에 콜론, 두 자리 숫자 및 공백 부분을 공백으로 바꿉니다).
이 표현 / 접근법은 en-US 및 en-US와 유사한 로케일에서만 작동합니다. AM / PM을 사용하지 않는 영국 영어 (en-GB)와 비슷한 결과를 원한다면 다른 정규식이 필요합니다.
원래 질문자의 샘플 결과를 바탕으로 나는 주로 미국 관객과 en-US 시간 스키마를 다루고 있다고 가정합니다.