Android 모바일에서 TimeZone을 얻는 방법?
버튼을 클릭할 때 안드로이드 모바일에서 시간대를 받고 싶다.
사용해보셨습니까TimeZone.getDefault()
:
대부분의 애플리케이션은 프로그램이 실행 중인 시간대를 기준으로 시간대를 반환하는 TimeZone.getDefault()를 사용한다.
참조: http://developer.android.com/reference/java/util/TimeZone.html
TimeZone tz = TimeZone.getDefault();
System.out.println("TimeZone "+tz.getDisplayName(false, TimeZone.SHORT)+" Timezone id :: " +tz.getID());
출력:
TimeZone GMT+09:30시간대 ID :: 오스트레일리아/다윈
편집: 사례 수정
나는 일광 절약 시간뿐만 아니라 숫자로도 포함된 오프셋이 필요했다.여기 내가 누군가 예를 찾고 있을 때를 대비해서 사용한 코드가 있다.
나는 겨울에 이란 테헤란에서 그리고 여름에 "4.5" (4:30")의 반응을 얻는다.
나 또한 줄로서 필요해서 서버에 게시할 수 있어서 마지막 줄이 필요하지 않을 수도 있어.
시간대를 수정하는 경우:
TimeZone tz = TimeZone.getDefault();
Date now = new Date();
//Import part : x.0 for double number
double offsetFromUtc = tz.getOffset(now.getTime()) / 3600000.0;
String m2tTimeZoneIs = Double.parseDouble(offsetFromUtc);
이 코드를 사용해 보십시오.
Calendar cal = Calendar.getInstance();
TimeZone tz = cal.getTimeZone();
사용자가 선택한 시간대를 반환한다.
Java.time 및 ThreeTen의 ZoneIdABP
현대적 답변:
ZoneId zone = ZoneId.systemDefault();
System.out.println(zone);
내가 호주/시드니 시간대에서 이 작은 조각을 실행했을 때, 출력은 정확히 다음과 같았다.
Australia/Sydney
DST(Summer Time) 인식 표준 시간대 이름 또는 약어를 원하는 경우:
DateTimeFormatter longTimeZoneFormatter = DateTimeFormatter.ofPattern("zzzz", Locale.getDefault());
String longTz = ZonedDateTime.now(zone).format(longTimeZoneFormatter);
System.out.println(longTz);
DateTimeFormatter shortTimeZoneFormatter = DateTimeFormatter.ofPattern("zzz", Locale.getDefault());
String shortTz = ZonedDateTime.now(zone).format(shortTimeZoneFormatter);
System.out.println(shortTz);
Eastern Summer Time (New South Wales) EST
그TimeZone
대부분의 다른 대답에 사용된 수업은 2011년에 질문을 받았을 때, 비록 형편없이 설계되었음에도 불구하고, 우리가 받았던 수업이었다.오늘은 오래전 일이고, 대신 2014년에 출시된 현대 자바 날짜와 시간 API를 사용할 것을 추천한다.
질문:.Java.time은 Android API 레벨 26을 필요로 하지 않는가?
Java.time은 구형 및 신형 Android 기기에서 모두 잘 작동한다.그것은 적어도 자바 6이 필요하다.
- Java 8 이상 및 최신 Android 기기(API 레벨 26부터)에서는 최신 API가 내장된다.
- 비 Android Java 6 및 7에서는 최신 클래스의 백포트인 ThreeTen Backport를 얻는다(ThreeTen for JSR 310, 아래쪽의 링크 참조).
- 편집: 일반적으로 Android Gradle 플러그인 4.0 이상에 있는 경우
coreLibraryDesugaring
당신은 java.time을 직접 사용할 수 있다.스리텐ABP는 더 이상 필요하지 않다. (이전의 글머리 기호: Android Edition of ThreeTen Backport를 사용한다.그것은 ThreeTenABP라고 불린다.그리고 날짜 및 시간 클래스를 다음에서 가져오는지 확인하십시오.org.threeten.bp
서브패키지(subpackage.
링크
- Oracle 자습서: 날짜 시간: java.time 사용 방법을 설명하는 시간.
- Java 사양 요청(JSR) 310, 다음과 같은 경우
java.time
처음에 설명되었다. - 세븐틴 백포트 프로젝트, 백포트
java.time
Java 6 및 7(JSR-310의 경우 310). - ThreeTenABP, Android Edition of ThreeTen Backport
- 질문: 쓰리텐 사용법Android Project의 ABP, 매우 철저한 설명과 함께.
TimeZone timeZone = TimeZone.getDefault();
timeZone.getID();
그것은 인쇄될 것이다.
Asia/Kolkata
간단한 날짜 형식을 갖춘 가장 간단한 솔루션:SimpleDateFormat("ZZZZZ"):
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"),
Locale.getDefault());
Date currentLocalTime = calendar.getTime();
DateFormat date = new SimpleDateFormat("ZZZZZ",Locale.getDefault());
String localTime = date.format(currentLocalTime);
System.out.println(localTime+ " TimeZone " );
==> 출력 : +05:30
내 단말기에서TimeZone.getDefault()
항상 UTC 표준 시간대를 반환한다.
사용자 구성 표준 시간대를 가져오려면 다음을 수행하십시오.
TimeZone.setDefault(null)
val tz = TimeZone.getDefault()
사용자가 선택한 시간대를 반환한다.
여기의 모든 답변은 대낮의 파라미터를 거짓으로 설정하는 것을 제안하는 것 같다.이는 한 해의 시간에 따라 약칭이 변경되는 많은 시간대에 부정확하다(예: EST 대 EDT).
아래의 솔루션은 현재 시간대 날짜에 따라 정확한 약어를 제공할 것이다.
val tz = TimeZone.getDefault()
val isDaylite = tz.inDaylightTime(Date())
val timezone = tz.getDisplayName(isDaylite, TimeZone.SHORT)
http://developer.android.com/reference/android/text/format/Time.html에 따르면 장치의 현재 시간대를 검색하려면 Time.getCurrentTimezone()을 사용해야 한다.
API 26 이상 디바이스의 경우 다음과 같이 받을 수 있다.
ZonedDateTime.now().getZone().toString();
참조URL: https://stackoverflow.com/questions/7672597/how-to-get-timezone-from-android-mobile
'programing' 카테고리의 다른 글
재귀 구성요소 및 재귀 중첩의 Vue 끌어서 놓기 (0) | 2022.04.28 |
---|---|
코드 작성자를 위한 PDF 사양:Adobe 또는 ISO? (0) | 2022.04.28 |
OIDC(vuejs + nodejs)를 사용하여 프런트엔드와 백엔드를 모두 인증하는 방법? (0) | 2022.04.28 |
Asyncdata와 Fetch의 차이 (0) | 2022.04.28 |
모달이 vue에서 닫혔을 때 어떻게 진술을 실행할 수 있는가? (0) | 2022.04.28 |