2012-09-04 7 views
1

a). 날짜, 시간 및 시간대를 나타내는 3 개의 문자열이 있습니다. 예 :Android 날짜 시간대 문제

String date = "2012-09-04"; 
String time = "01:30:17"; 
String timeZone = "UTC"; 

이 문자열을 사용하여 날짜를 만들고 싶습니다.

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z"); 
Date createdDate = formatter.parse(date + " " + time + " " + timeZone); 

작동하지 않음 - "Unparseable date"라는 메시지가 나타납니다.

b). 특정 시간대에 Android 기기의 날짜를 가져 오는 방법은 무엇입니까? 나는 예를 들어, UTC, TIMEZONE에 현재 시간을 변환 단지 방법을 발견

Calendar cldr = Calendar.getInstance(); 
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
sdf.setTimeZone(TimeZone.getTimeZone("UTC")); 
String dateInUTCTimeZone = sdf.format(cldr.getTime()); 

을하지만 결과는 Date 객체가되고 싶어요.

+0

이 안드로이드 특정하지 않습니다. 당신은 '자바 타임 존'또는 유사에 대한 검색 봤어? – Ridcully

+0

구문 분석하는 동안 문자열을 외부에 추가하고 전체 문자열을 구문 분석하려고 시도하는 중 추가 작업이 필요합니다. – Khan

답변

3

문자열 "UTC"는 날짜 파서가 인식 할 수있는 문자열이 아닙니다. 당신이 UTC를 정의하는이 상수를 사용해야하는 경우, 다음 날짜 형식은

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss 'UTC'"); 

에 대한 작업을해야하지만, 난 강력 TU는 rfc3990 표준을 사용하는 것이 좋습니다 것 :

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); 

을 다음 대표하여 날짜를 다음 문자열 (2012-09-04T13 : 24 : 59Z)로 변경합니다. 당신이 특정 시간대에 UTC에 날짜를 표현하려면

마지막으로, 포맷하기 전에 다음을 사용 :

sdf.setTimeZone(TimeZone.getDefault()); //Choose the TimeZone you need