2013-03-10 2 views
2

사용자 국가에 따라 DD/MM/YYYY 태그의 순서를 변경해야한다는 요구 사항이 있습니다.국가에 따라 날짜 형식을 변경하는 방법

http://en.wikipedia.org/wiki/Date_format_by_country

내가 이렇게 생각하는 방법은 국가/DATEFORMAT 테이블을 생성하고 국가 선택에 따른 jQuery를 사용하여 주변의 필드를 이동하는 것입니다.

PHP 또는 js 또는 더 나은 접근 방식으로이 작업을 수행 할 수있는 기존 방법이 있습니까? http://php.net/manual/en/function.setlocale.php

자바 스크립트 : 나는 또한 국가/DATEFORMAT의 테이블을 찾고이 아닌 수동으로 모든 값을 삽입하지만 난 아무것도 찾을 수 없습니다되었다 ... PHP를 들어

+0

체크 아웃 기간 "로케일". –

+0

http://jqueryui.com/datepicker/#localization 및 http://docs.jquery.com/UI/Datepicker/Localization – MatRt

+0

답변 해 주셔서 감사합니다. 가능한 경우 코드 예제가 필요합니다. 예를 들어, 제안 된 JS toLocaleString을 사용하여 필드를 이동 시키면 세 가지 선택 요소 인 DD MM YYYY가 생깁니다. jquery 예제는 훌륭하지만 각 국가마다 datepicker를 포함해야합니다. – Athanatos

답변

2

이 좋은 시작해야한다 : Display date/time in user's locale format and time offset

모두로, 대부분의 현대 언어는 로케일 지원 기능이 잘 내장되어 있습니다. 직접 구현할 필요는 없습니다. 그것은 무심하고 버그가 있습니다 (현지화는 어렵습니다).

0

클라이언트 측에서 날짜 형식을 변경하려면 JavaScript의 Date 객체에서 toLocaleString 함수를 사용해보십시오. toLocaleString은 클라이언트 OS의 위치 설정에 따라 형식을 변경합니다. 또한 국가 및 날짜 형식의 테이블이 필요하지 않습니다.

이 작업은 jQuery 또는 추가 플러그인이 필요없이 수행 할 수 있습니다. 당신이 PHP를 사용하는 경우

+1

이론상으로 좋지만 모든 브라우저가 지원하지는 않기 때문에 실제로는 작동하지 않습니다. W3Schools [ECMA-262] (http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.5.5) 언어 기능을위한 참고 자료 [Mozilla Developer Network ] (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/toLocaleString)도 좋은 자료입니다. 이 경우 [toLocaleDateString] (http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.5.6)이 더 나은 제안 일 수 있습니다. – RobG

0

다음 IntlDateFormatter()는 당신을하는 데 도움이 :

$d = new DateTime(); 

$fmt = new IntlDateFormatter('en-US', IntlDateFormatter::SHORT, IntlDateFormatter::NONE); 
echo "US: ".$fmt->format($d)."<br/>"; 

$fmt = new IntlDateFormatter('en-GB', IntlDateFormatter::SHORT, IntlDateFormatter::NONE); 
echo "GB: ".$fmt->format($d)."<br/>"; 

$fmt = new IntlDateFormatter('en-AU', IntlDateFormatter::SHORT, IntlDateFormatter::NONE); 
echo "AU: ".$fmt->format($d)."<br/>"; 

$fmt = new IntlDateFormatter('de-DE', IntlDateFormatter::SHORT, IntlDateFormatter::NONE); 
echo "DE: ".$fmt->format($d)."<br/>"; 

출력 :

US: 2/1/18 
GB: 01/02/2018 
AU: 1/2/18 
DE: 01.02.18 
관련 문제