Android 앱에서 현재 시간과 날짜를 어떻게 알 수 있습니까?
답변
당신은 사용할 수 있습니다 :
import java.util.Calendar
Date currentTime = Calendar.getInstance().getTime();
Calendar에는 필요한 모든 상수가 많이 있습니다.
편집 : 캘린더 클래스 설명서
확인
답변
당신은 할 수 있습니다 ( 하지만 더 이상합니다 – 아래 참조하지 않습니다!)를 사용 android.text.format.Time를 :
Time now = new Time();
now.setToNow();
위의 참조에서 :
Time 클래스는 java.util.Calendar 및 java.util.GregorianCalendar 클래스를 더 빠르게 대체합니다. Time 클래스의 인스턴스는 두 번째 정밀도로 지정된 순간을 나타냅니다.
참고 1 :
이 답변을 작성한 지 몇 년이 지났으며 오래되고 Android 전용이며 더 이상 사용되지 않는 클래스에 관한 것입니다. 구글 은 “이 클래스에는 많은 문제가 있으며 대신 GregorianCalendar 를 사용하는 것이 좋습니다 “라고 말합니다.
참고 2 :Time
클래스에는 toMillis(ignoreDaylightSavings)
메서드 가 있지만 시간 (밀리 초)이 걸리는 메서드에 전달하는 것이 편리합니다. 시간 값은 1 초까지만 정확합니다 . 밀리 초 부분은 항상 000
입니다. 루프에 있다면
Time time = new Time(); time.setToNow();
Log.d("TIME TEST", Long.toString(time.toMillis(false)));
... do something that takes more than one millisecond, but less than one second ...
결과 시퀀스는 1410543204000
다음 초가 시작될 때까지 같은 값을 반복하며 , 이때 1410543205000
반복이 시작됩니다.
답변
특정 패턴으로 날짜와 시간을 얻으려면 다음을 사용할 수 있습니다.
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault());
String currentDateandTime = sdf.format(new Date());
또는,
날짜 :
String currentDate = new SimpleDateFormat("dd-MM-yyyy", Locale.getDefault()).format(new Date());
시각:
String currentTime = new SimpleDateFormat("HH:mm:ss", Locale.getDefault()).format(new Date());
답변
사용자 정의 형식을 선호하는 사람들은 다음을 사용할 수 있습니다.
DateFormat df = new SimpleDateFormat("EEE, d MMM yyyy, HH:mm");
String date = df.format(Calendar.getInstance().getTime());
다음과 같은 DateFormat 패턴을 가질 수 있습니다.
"yyyy.MM.dd G 'at' HH:mm:ss z" ---- 2001.07.04 AD at 12:08:56 PDT
"hh 'o''clock' a, zzzz" ----------- 12 o'clock PM, Pacific Daylight Time
"EEE, d MMM yyyy HH:mm:ss Z"------- Wed, 4 Jul 2001 12:08:56 -0700
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"------- 2001-07-04T12:08:56.235-0700
"yyMMddHHmmssZ"-------------------- 010704120856-0700
"K:mm a, z" ----------------------- 0:08 PM, PDT
"h:mm a" -------------------------- 12:08 PM
"EEE, MMM d, ''yy" ---------------- Wed, Jul 4, '01
답변
실제로 기기에서 설정된 현재 시간대를로 설정하는 것이 더 안전합니다. Time.getCurrentTimezone()
그렇지 않으면 UTC로 현재 시간을 얻습니다.
Time today = new Time(Time.getCurrentTimezone());
today.setToNow();
그런 다음 원하는 날짜 필드를 모두 얻을 수 있습니다. 예를 들면 다음과 같습니다.
textViewDay.setText(today.monthDay + ""); // Day of the month (1-31)
textViewMonth.setText(today.month + ""); // Month (0-11)
textViewYear.setText(today.year + ""); // Year
textViewTime.setText(today.format("%k:%M:%S")); // Current time
자세한 내용은 android.text.format.Time 클래스를 참조 하십시오.
최신 정보
많은 사람들이 지적한 것처럼 구글은이 클래스에 여러 가지 문제가 있으며 더 이상 사용해서는 안된다고 말합니다.
이 클래스에는 여러 가지 문제가 있으므로 GregorianCalendar를 대신 사용하는 것이 좋습니다.
알려진 문제 :
역사적으로 시간 계산을 수행 할 때 모든 산술은 현재 32 비트 정수를 사용하여 수행됩니다. 이로 인해 1902에서 2037까지의 신뢰할 수있는 시간 범위가 제한됩니다. 자세한 내용은 2038 년 문제에 대한 Wikipedia 기사를 참조하십시오. 이 동작에 의존하지 마십시오. 앞으로 변경 될 수 있습니다. 존재하지 않는 날짜 (예 : DST 전환으로 인해 건너 뛴 월 시간)에서 switchTimezone (String)을 호출하면 1969 년의 날짜 (예 : -1 또는 1970 년 1 월 1 일 1 초 전 1 초)가됩니다. 많은 형식화 / 구문 분석은 ASCII 텍스트를 가정하므로 ASCII가 아닌 스크립트에는 사용하기에 적합하지 않습니다.
답변
현재 날짜와 시간으로 다음을 사용하십시오.
String mydate = java.text.DateFormat.getDateTimeInstance().format(Calendar.getInstance().getTime());
어떤 출력 :
Feb 27, 2012 5:41:23 PM