명시 적으로 withLocale
을 사용하여 로캘을 독일어로 설정하면 am/pm 문자열이 시간 값에 현지화되지만 그렇지 않습니다 해당 로케일에 맞는 24 시간 형식으로 변환하십시오.Joda DateTimeFormatter.withLocale()을 사용하면 시간 형식이 아닌 am/pm의 문자열 값에만 영향을받습니다.
Locale.setLocale(Locale.GERMAN);
을 사용하여 새 프로세스를 만들면 형식이 올바른 것입니다.
withLocale()
은 로케일의 모든 측면에 영향을 미치지 않아야합니까?
// Code snippet where call is being made:
Log.d(TAG, "XYZZY getDefault(): " + Locale.getDefault().toString());
DateTimeFormatter timeFormat = DateTimeFormat.shortTime()
.withLocale(Locale.getDefault());
Log.d(TAG, "XYZZY timeFormat.locale: " +
timeFormat.getLocale().toString());
dateString = alarmTime.toString(timeFormat);
Log.d(TAG, "XYZZY dateString: "+ dateString);
가변 alarmTime
오후 11:00의 값 (2천3백시간)이있는 경우 :
10-04 14 : 17 : 41.492 (23,609)의 getDefault XYZZY() : ko 페이지
10 -04 14 : 17 : 41.493 (23609)은 : XYZZY timeFormat.locale : ko 페이지
는 10-04 14 : 17 : 41.495 (23609)은 : XYZZY 날짜 열이 : 오후 11시
지금 독일어 로케일로 전환 다시 실행하십시오. 같은 코드는 독일어로 'PM'변화에 대한 문자열을 유의하지만 시간 형식 (접미사 억제되어야하고 시간 값 23:00이어야한다) :
10-04 14시 18분 : 15.066 (23609) : XYZZY getDefault() : de_DE
10-04 14 : 18 : 15.066 (23609) : XYZZY timeFormat.locale : de_DE
10-04 14 : 18 : 15.067 (23609) : XYZZY dateString : 11 : 00 nachm. 프로세스가 지금은 독일어에 대한 올바른 시간 형식이 반환 멀리 가서 다시 시작해야, 로케일을 떠나 독일어로, 그리고에 대한
기다립니다 :
10-04 14 : 18 : 54.497 (23,881) XYZZY의 getDefault() DE_DE
10-04 14 : 18 : 54.497 (23,881) XYZZY timeFormat.locale : DE_DE
10-04 14 : 18 : 54.498 (23,881) XYZZY 날짜 열 : 23시
매번 alarmTime을 어떻게 만드나요? 그리고 괄호 안의 숫자는 프로세스 ID입니다. 다시 코드를 다시 실행 한 경우 케이스 1과 케이스 2에서 왜 동일합니까? – Vahid
프로세스 ID가 동일하다는 것은 내가 보는 기본 문제입니다. 프로세스가 사라지고 새로운 것이 시작되면 (로케일이 독일어로 설정 됨) 원하는 결과를 얻고 있습니다 (사례 3). –
는 alarmTime을 생성하는 코드를 공유 할 수 있습니까? 그리고 Android 용으로 개발하고 있습니까? – Vahid