2010-03-10 2 views
0

누군가가 자바 스크립트 정규식 질문을 도와 줄 수 있습니까? 문자열의 모든 자릿수를 포맷 된 버전으로 바꾸려고합니다. 이것은 내가 가지고있는 것입니다.Javascript는 숫자 날짜를 찾아서 날짜로 바꿀 수 있습니까?

txt = txt.replace(/\d{10}/g, 'Formatted Date Here'); 

이게 가능합니까? 어떤 도움이라도 대단히 감사합니다! 감사!

+1

10 자리 날짜 값의 형식은 무엇입니까? 그것은 신기원 이후의 초입니까? – cletus

답변

1

이를 달성하기 위해 함수 콜백 replace()를 사용할 수 있습니다

var txt = "This is a test of 1234567890 and 1231231233 date conversion"; 
txt = txt.replace(/\d{10}/g, function(s) { 
    return new Date(s * 1000); 
}); 
alert(txt); 

출력 :

This is a test of Sat Feb 14 2009 07:31:30 GMT+0800 and Tue Jan 06 2009 16:40:33 GMT+0800 date conversion 

을 당신은 올바른 날짜 형식을 사용하려면이 옵션을 조정해야합니다. 또한 시간대 문제를 고려해야합니다. 클라이언트의 시간대가 서버의 시간대와 반드시 같을 필요는 없습니다.

이러한 문제를 피하려면 서버에서 날짜 서식을 설정하는 것이 좋습니다.

+0

귀하의 응답을 위해 고마워,하지만 난 아직도 조금 preg_replace_callback() 구현하는 방법에 대한 혼란 스러워요 어떻게 즉시 18295732 같은 문자열을 1990 년 3 월 7 일 –

+0

자바 스크립트 기본 제공 대체 허용했습니다 버전 1.3 이후 '대체'매개 변수의 기능 – Jimmy

+0

답장을 보내 주셔서 대단히 감사합니다. 이것이 중요한 돌파구입니다! 변환하려는 숫자는 PHP 타임 스탬프의 구조에 있습니다. –

3

이 시도 :

str = str.replace(/\d{10}/g, function($0) { 
    return new Date($0*1000); 
}); 

Date 밀리 초 단위로 시간을 받아들입니다. 따라서 일치 항목 ($0 건을 전달)에 1000을 곱하면됩니다.

기본 형식과 다른 형식을 원할 경우 methods of a Date instance을 살펴보십시오. JavaScript Date.format functon Amarghosh는 여기에 게시

str = str.replace(/\d{10}/g, function($0) { 
    var d = new Date($0*1000); 
    return (d.getMonth() + 1) + ", " + d.getDate() + ", " + (d.getHours() % 12 || 12) + ":" + d.getMinutes() + " " + (d.getHours() < 12 ? 'AM' : 'PM'); 
}); 

당신을 도울 수 있습니다 여기에 예입니다.

+0

월, 일, 년, 시간 : 오전 AM/PM을 말하도록 날짜를 지정할 수있는 방법이 있습니까? 나는 $ 0 * 1000이 토요일에 도착하는 방법을 매우 혼란스럽게 생각합니다. 2009 년 2 월 14 일 07:31:30 GMT + 0800 –

+0

감사합니다! d.getMonth() + 1이 처음에 나를 때려 눕혔습니다. 왜 내가 계속 2를 얻는 지 확신 할 수 없었기 때문입니다. 이것은 많은 의미를가집니다. 감사! –

+0

@Mark Anderson : 인스턴스 메소드를 살펴보아야합니다 (https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Date#Methods_2 참조). 그들은 모두 설명됩니다. – Gumbo

관련 문제