안드로이드에서 현재 시간과 날짜를 얻는 방법


1108

Android 앱에서 현재 시간과 날짜를 어떻게 알 수 있습니까?


3
답변 43 개! 많은 사람들이 글을 쓸 때 좋았지 만 2018 년에 사용하기에 좋은 대답은 여기에 있습니다 .
Ole VV

답변:


1310

당신은 사용할 수 있습니다 :

import java.util.Calendar

Date currentTime = Calendar.getInstance().getTime();

Calendar에는 필요한 모든 상수가 많이 있습니다.

편집 : 캘린더 클래스 설명서
확인


14
+1 매우 도움이되었습니다. 새로 워진 것은 우리가 필요로하는 모든 작은 일들입니다. 저는 율리우스 날짜를 얻기 위해 캘린더를 사용하고 있습니다. 밀리 초를 받고 값이 오늘과 같은지 알아내는 것보다 훨씬 쉽습니다.)
Bill Mote

9
그러나 이것은 날짜와 시간을 어디에서 가져 옵니까? 안드로이드 장치 설정 자체?
Kyle Clegg

12
@Kyle 예, 장치 시간 설정 / 시간대를 기반으로합니다. 문서 에서 인용 : "Calendar의 getInstance 메소드는 로케일이 시스템 설정을 기반으로 하고 시간 필드가 현재 날짜 및 시간으로 초기화 된 캘린더를 리턴합니다 " -(클래스 문서의 첫 번째 샘플 코드 행 위).

3
+1이 솔루션은 밀리 초 단위의 정밀도를 가지고 있습니다.
Igor Zelaya

42
@adamdport가 말했듯이 이것은 실제로 질문에 대답하지 않습니다 ... Calendar.getInstance().getTime()또는 Calendar.getInstance().getTimeInMillis()작동합니다.
akousmata

487

당신은 할 수 있습니다 ( 하지만 더 이상합니다 - 아래 참조하지 않습니다!)를 사용 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반복이 시작됩니다.


2
@InsanityOnABun과 Muhammad Babar. 아니, 아니. 문서는 "두 번째 정밀도로 지정됨" 이라고 말합니다 . 가장 간단한 테스트 (루프에 현재 시간을 가져오고, 결과를 기록 / 인쇄하고 결과를 인쇄 / 출력)는 결과 시간이 밀리 초 단위로 000임을 보여줍니다!
ToolmakerSteve

3
@IgorZelaya 밀리 초 정확도를 원한다면 시간이 아닌 인터벌 타이밍 을하는 것입니다. Android 문서 SystemClock.uptimeMillis()는 간격 타이밍을 권장 합니다. 이것이 대부분의 내장 함수가 사용하는 것이므로 모든 장치에서 잘 구현 될 수있는 강력한 동기가 있습니다. SystemClock의 토론을 참조하십시오 ...이 기능을 시간과 연관 시키려면 앱의 onResume에서 이것을 읽고 Time / setToNow / toMillis를 읽으십시오. 그것들의 차이점을 기억하십시오.
ToolmakerSteve

Time 클래스를 사용하지 마십시오 . 앞으로 제거 될 예정이며 많은 문제가 있습니다.
Sandy Chapman

1
>이 클래스는 API 레벨 22에서 더 이상 사용되지 않습니다. 대신 GregorianCalendar를 사용하십시오. 여기
Neo

실제로, GregorianCalendar자바와 나중에 안드로이드에서 java.time 클래스, 특히 로 대체되었습니다 ZonedDateTime. 이전 Android의 경우 ThreeTen-BackportThreeTenABP 프로젝트를 참조하십시오 .
Basil Bourque

365

특정 패턴으로 날짜와 시간을 얻으려면 다음을 사용할 수 있습니다.

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());

시간대를 채택 해야하는 UTC로 시간을 제공합니다.
Andras Balázs Lajtha

10
성능에 문제가 있으면 SimpleDateFormat이 문제가 될 수 있습니다. 내 응용 프로그램에서 특정 시간 (밀리 초를 유지하는 긴 정수)과 같은 수의 드로어 블 리소스를 나타내는 약 20 개의 HH : MM 레이블이있는 사용자 정의보기가있었습니다. 초기 테스트에서 상호 작용이 원하는만큼 유동적이지 않은 것으로 나타났습니다. onDraw ()를 프로파일 링했을 때 SimpleTimeFormatter 호출이 80 %의 시간을 소비한다는 것을 알았습니다. 사실, 나는이 페이지를보다 효율적인 포맷터 검색과 달력 등에 대해 더 많이 배우기위한 일부로 읽습니다.
William T. Mallard

3
예,하지만 더 이상은 아닙니다. 나는 관련된 오버 헤드를 깨닫지 못했고 POJO라고 생각했습니다.
William T. Mallard

32
한마디로 :String currentDateandTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
Pratik Butani

4
sdf.setTimeZone(TimeZone.getDefault())중간에 삽입 할 수 있습니다
Harvey

231

사용자 정의 형식을 선호하는 사람들은 다음을 사용할 수 있습니다.

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

126

실제로 기기에서 설정된 현재 시간대를로 설정하는 것이 더 안전합니다. 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가 아닌 스크립트에는 사용하기에 적합하지 않습니다.


어떤 패키지에서 시간을 가져와야합니까?
ManishSB

이 클래스는 API 레벨 22에서 더 이상 사용되지 않습니다. 대신 GregorianCalendar를 사용할 수 있습니다.
Choletski

78

현재 날짜와 시간으로 다음을 사용하십시오.

String mydate = java.text.DateFormat.getDateTimeInstance().format(Calendar.getInstance().getTime());

어떤 출력 :

Feb 27, 2012 5:41:23 PM

시스템의 현재 날짜, 요일 및 시간을 얻었지만 시간이 변경되지 않습니다. 시간을 초 단위로 늘리고 싶습니다. 어떻게 할 수 있습니까?
Bhavesh Hirpara

2
안드로이드 API에 따르면 권장되는 방법입니다. developer.android.com/reference/java/text/… 감사합니다!
M Granja

58

이 방법으로 시도하십시오 날짜 및 시간 형식을 얻으려면 아래에 모든 형식이 제공됩니다.

    Calendar c = Calendar.getInstance();
    SimpleDateFormat dateformat = new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss aa");
    String datetime = dateformat.format(c.getTime());
    System.out.println(datetime);

먼저

둘째 제삼


53

tl; dr

Instant.now()  // Current moment in UTC.

…또는…

ZonedDateTime.now( ZoneId.of( "America/Montreal" ) )  // In a particular time zone

세부

다른 답변은 정확하지만 구식입니다. 오래된 날짜-시간 수업은 잘못 설계되고 혼란스럽고 번거로운 것으로 입증되었습니다.

java.time

이러한 오래된 클래스는 java.time 프레임 워크에 의해 대체되었습니다 .

이 새로운 클래스는 JSR 310에 의해 정의되고 ThreeTen-Extra에 의해 확장 된 매우 성공적인 Joda-Time 프로젝트에서 영감을 얻었습니다. 프로젝트에 .

Oracle Tutorial을 참조하십시오 .

Instant

는 최대 나노초 해상도의 UTCInstant 타임 라인의 순간입니다 .

 Instant instant = Instant.now(); // Current moment in UTC.

시간대

시간대 ( ZoneId)를 적용 하여ZonedDateTime . 시간대를 생략하면 JVM의 현재 기본 시간대가 내재적으로 적용됩니다. 원하는 시간대를 명시 적으로 지정하는 것이 좋습니다.

사용하여 적절한 시간대 이름 의 형식 continent/region과 같은 America/Montreal, Europe/Brussels또는 Asia/Kolkata. 절대로 같은 3-4 문자 약어를 사용하지 EST또는 IST그들이 어느 쪽도 표준화되지도 독특한 같다.

ZoneId zoneId = ZoneId.of( "America/Montreal" ); // Or "Asia/Kolkata", "Europe/Paris", and so on.
ZonedDateTime zdt = ZonedDateTime.ofInstant( instant , zoneId );

최신 및 기존 Java의 날짜-시간 유형 테이블

문자열 생성

당신은 쉽게 생성 할 수 있습니다 String날짜-시간 값의 텍스트 표현으로 . 표준 형식, 사용자 정의 형식 또는 자동으로 현지화 된 형식을 사용할 수 있습니다.

ISO 8601

toString공통적이고 합리적인 ISO 8601 표준을 사용하여 텍스트 형식을 지정하기 위해 메소드를 호출 할 수 있습니다 .

String output = instant.toString();

2016-03-23T03 : 09 : 01.613Z

에 대한 참고 ZonedDateTimetoString방법은 대괄호 시간대의 이름을 추가하여 ISO 8601 표준을 확장합니다. 매우 유용하고 중요한 정보이지만 표준은 아닙니다.

2016-03-22T20 : 09 : 01.613-08 : 00 [미국 / 로스 앤젤레스]

맞춤 형식

또는 DateTimeFormatter클래스 와 함께 고유 한 형식 패턴을 지정하십시오 .

DateTimeFormatter formatter = DateTimeFormatter.ofPattern( "dd/MM/yyyy hh:mm a" );

를 지정 Locale인간의 언어 (영어, 대한 프랑스어 등) 일 / 월의 이름을 번역과 또한 연도와 월과 날짜의 순서로 문화적 규범을 정의하는 사용. 참고 Locale시간대과는 아무 상관이 없습니다.

formatter = formatter.withLocale( Locale.US ); // Or Locale.CANADA_FRENCH or such.
String output = zdt.format( formatter );

현지화

더 나은 방법은 java.time이 지역화 작업을 자동으로 수행하게하는 것입니다.

DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime( FormatStyle.MEDIUM );
String output = zdt.format( formatter.withLocale( Locale.US ) );  // Or Locale.CANADA_FRENCH and so on.

java.time에 대하여

java.time의 프레임 워크는 나중에 자바 8에 내장되어 있습니다. 이 클래스는 까다로운 기존에 대신 기존 과 같은 날짜 - 시간의 수업을 java.util.Date, Calendar, SimpleDateFormat.

유지 보수 모드 에 있는 Joda-Time 프로젝트 는 java.time 으로의 마이그레이션을 조언합니다. 클래스.

자세한 내용은 Oracle Tutorial을 참조하십시오 . 많은 예제와 설명을 보려면 스택 오버플로를 검색하십시오. 사양은 JSR 310 입니다.

java.time 객체를 데이터베이스와 직접 교환 할 수 있습니다 . JDBC 4.2 이상을 준수 하는 JDBC 드라이버를 사용하십시오 . 문자열 필요 없음java.sql.* 수업이 .

java.time 클래스는 어디서 구할 수 있습니까?

Java 및 Android 버전에서 사용할 * java.time * 기술의 구현을 나열하는 테이블.


2
@ giraffe.guru 내 답변을 다시 읽어보십시오. 세 번째 글 머리 기호를 놓쳤습니다. 많은 java.time 기능은 자바 6 7 백 포팅 ThreeTen - 백 포트 및 상기 안드로이드 적응 ThreeTenABP .
Basil Bourque 2016 년

Instant.now()그리고 ZonedDateTime.now()필요한 API (26)
라이드

2
@Ryde giraffe.guru에게 말했듯이, 내 답변을 다시 읽어보십시오. "Android"라는 세 번째 글 머리 기호를 찾으십시오.
Basil Bourque

나는 당신이 옳다고 생각합니다 : 새로운 java.time 판 테이블은 글 머리 기호 목록보다 더 직접적이고 쉽게 메시지를 전달합니다. 그것이 저라면 문제를 조금 더 복잡하게 만들고 ThreeTenBackport / Java 8+ 및 ThreeTenABP / Android 26+ 아래에 괄호 (또는 이와 유사한 것)로 체크 표시를두면이 조합이 작동하기 때문에 일반적으로 사용하는 데 아무런 의미가 없습니다. ThreeTenABP를 사용하고 레벨 26 이하에서 다양한 Android API 레벨을 대상으로하는 Android 앱이 개발 중입니다.이 경우 개발자가 잘 선택하는 것 같습니다.
Ole VV

1
@ OleV.V. 그래픽 표에서 보조 확인 표시를 제안 해 주셔서 감사합니다. 나는 이후 버전의 테이블에서 이것을 사용하고 있습니다. 많이 향상되었습니다.
Basil Bourque

52

현재 시간을 알기 위해 System.currentTimeMillis()Java에서 표준을 사용할 수 있습니다 . 그런 다음 날짜를 만드는 데 사용할 수 있습니다

Date currentDate = new Date(System.currentTimeMillis());

그리고 다른 사람들이 언급했듯이 시간을 만들기 위해

Time currentTime = new Time();
currentTime.setToNow();

13
필요가 없습니다 System.currentTimeMillis(); 단순히 new Date() 같은 일을 합니다.
Jonik

Cannot resolve constructor Date()안드로이드에서 @Jonik , 안드로이드 SDK는 자바 6과 7의 혼합을 사용합니다.
surfer190

1
감사합니다. Date currentDate = new Date(System.currentTimeMillis());정확함
mghhgm

@mghhgm 아니요, 옳지 않습니다 new Date(System.currentTimeMillis()): (a)과 동일하므로 중복됩니다 new Date(). (b) 귀찮은 java.util.Date클래스는 이제 java.time.InstantJava 8 이상에서 대체되었습니다 . ThreeTen-Backport 프로젝트 에서 Java 6 & 7로 백 포트되고 ThreeTenABP의 이전 Android (<26)로 백 포트되었습니다 .
Basil Bourque

37

코드를 사용할 수 있습니다 :

Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String strDate = sdf.format(c.getTime());

산출:

2014-11-11 00:47:55

여기SimpleDateFormat 에서 더 많은 형식 지정 옵션을 얻을 수 있습니다 .


참고로, 같은 귀찮은 된 날짜 - 시간 수업 java.util.Date, java.util.Calendar그리고 java.text.SimpleDateFormat지금 기존 에 의해 대체, java.time의 나중에 자바 8에 내장 된 클래스. Oracle의 Tutorial 참조하십시오 .
Basil Bourque

32

다음과 같이 현재 시간에 대한 별도의 값을 얻기 위해 시간을 분석 할 수 있습니다.

Calendar cal = Calendar.getInstance(); 

  int millisecond = cal.get(Calendar.MILLISECOND);
  int second = cal.get(Calendar.SECOND);
  int minute = cal.get(Calendar.MINUTE);
        //12 hour format
  int hour = cal.get(Calendar.HOUR);
        //24 hour format
  int hourofday = cal.get(Calendar.HOUR_OF_DAY);

다음과 같이 날짜도 마찬가지입니다.

Calendar cal = Calendar.getInstance(); 

  int dayofyear = cal.get(Calendar.DAY_OF_YEAR);
  int year = cal.get(Calendar.YEAR);
  int dayofweek = cal.get(Calendar.DAY_OF_WEEK);
  int dayofmonth = cal.get(Calendar.DAY_OF_MONTH);

다음 5-10 일 동안 어떻게 날짜를 구할 수 있습니까? 여기 수동 계산입니까?
CoDe

@CoDe 당신은 그 날짜를 사용합니다
FindOutIslamNow

27

Android가 주로 Java이므로 몇 가지 옵션이 있지만 textView로 작성하려면 다음 코드를 사용하십시오.

String currentDateTimeString = DateFormat.getDateInstance().format(new Date());

// textView is the TextView view that should display it
textView.setText(currentDateTimeString);

8
당신은 사용해야 Calendar하거나 GregorianCalendar. 이 Date클래스는 더 이상 사용되지 않습니다.
Joseph Earl

고마워 친구 :) 나는 그것에 대해 전혀 몰랐다
dLobatog

12
Date () 참조 문서 ( developer.android.com/reference/java/util/Date.html ) 에 따르면 더 이상 사용되지 않는 Date () 클래스를 참조하는 것은 없지만 몇 가지 메소드와 생성자가 더 이상 사용되지 않습니다.
Zac Seth

2
현재 사용자 설정 (예 : 12/24 시간 형식)에서 잘못된 결과가 생성됩니다. android.text.format.DateFormat.getTimeFormat (Context context)를 사용하여 현재 사용자 설정에 대한 DateFormat을 가져옵니다.
wonder.mice

@Zac 당신도 맞습니다 Date의 getTime 메소드가 더 많이 사용됩니다

24
SimpleDateFormat databaseDateTimeFormate = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
SimpleDateFormat databaseDateFormate = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sdf1 = new SimpleDateFormat("dd.MM.yy");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy.MM.dd G 'at' hh:mm:ss z");
SimpleDateFormat sdf3 = new SimpleDateFormat("EEE, MMM d, ''yy");
SimpleDateFormat sdf4 = new SimpleDateFormat("h:mm a");
SimpleDateFormat sdf5 = new SimpleDateFormat("h:mm");
SimpleDateFormat sdf6 = new SimpleDateFormat("H:mm:ss:SSS");
SimpleDateFormat sdf7 = new SimpleDateFormat("K:mm a,z");
SimpleDateFormat sdf8 = new SimpleDateFormat("yyyy.MMMMM.dd GGG hh:mm aaa");


String currentDateandTime = databaseDateTimeFormate.format(new Date());     //2009-06-30 08:29:36
String currentDateandTime = databaseDateFormate.format(new Date());     //2009-06-30
String currentDateandTime = sdf1.format(new Date());     //30.06.09
String currentDateandTime = sdf2.format(new Date());     //2009.06.30 AD at 08:29:36 PDT
String currentDateandTime = sdf3.format(new Date());     //Tue, Jun 30, '09
String currentDateandTime = sdf4.format(new Date());     //8:29 PM
String currentDateandTime = sdf5.format(new Date());     //8:29
String currentDateandTime = sdf6.format(new Date());     //8:28:36:249
String currentDateandTime = sdf7.format(new Date());     //8:29 AM,PDT
String currentDateandTime = sdf8.format(new Date());     //2009.June.30 AD 08:29 AM

날짜 형식 패턴

G   Era designator (before christ, after christ)
y   Year (e.g. 12 or 2012). Use either yy or yyyy.
M   Month in year. Number of M's determine length of format (e.g. MM, MMM or MMMMM)
d   Day in month. Number of d's determine length of format (e.g. d or dd)
h   Hour of day, 1-12 (AM / PM) (normally hh)
H   Hour of day, 0-23 (normally HH)
m   Minute in hour, 0-59 (normally mm)
s   Second in minute, 0-59 (normally ss)
S   Millisecond in second, 0-999 (normally SSS)
E   Day in week (e.g Monday, Tuesday etc.)
D   Day in year (1-366)
F   Day of week in month (e.g. 1st Thursday of December)
w   Week in year (1-53)
W   Week in month (0-5)
a   AM / PM marker
k   Hour in day (1-24, unlike HH's 0-23)
K   Hour in day, AM / PM (0-11)
z   Time Zone

1
다른 답변도 정확하지만. 이 답변은 관련 시간 관련 문제에도 도움이 되므로이 답변을 좋아했습니다. 감사합니다 @Vighnesh KM
Ankit Gupta

17
final Calendar c = Calendar.getInstance();
    int mYear = c.get(Calendar.YEAR);
    int mMonth = c.get(Calendar.MONTH);
    int mDay = c.get(Calendar.DAY_OF_MONTH);

textView.setText(""+mDay+"-"+mMonth+"-"+mYear);

15

이것은 날짜와 시간을 얻는 데 유용한 방법입니다.

private String getDate(){
    DateFormat dfDate = new SimpleDateFormat("yyyy/MM/dd");
    String date=dfDate.format(Calendar.getInstance().getTime());
    DateFormat dfTime = new SimpleDateFormat("HH:mm");
    String time = dfTime.format(Calendar.getInstance().getTime());
    return date + " " + time;
}

이 메소드를 호출하여 현재 날짜 및 시간 값을 얻을 수 있습니다.

2017/01//09 19:23

프리젠 테이션 로직과 프로세스 로직의 긴밀한 결합을 좋아하지 않습니다. 형식을 지정하고 날짜 입력 매개 변수를 취하는 방법을 선호합니다. 나는 또한 왜 당신이 2 SimpleDateFormat초와 2 Date초를 사용하는지 이해하지 못합니다 ... "yyyy/MM/dd HH:mm"형식 및 통화 캘린더로 한 번만 사용할 수 있습니까?
AjahnCharles

12
Time time = new Time();
time.setToNow();
System.out.println("time: " + time.hour+":"+time.minute);

예를 들어 12:32가 표시됩니다.

android.text.format.Time을 가져와야합니다.


12
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
    Calendar cal = Calendar.getInstance();
    System.out.println("time => " + dateFormat.format(cal.getTime()));

    String time_str = dateFormat.format(cal.getTime());

    String[] s = time_str.split(" ");

    for (int i = 0; i < s.length; i++) {
         System.out.println("date  => " + s[i]);
    }

    int year_sys = Integer.parseInt(s[0].split("/")[0]);
    int month_sys = Integer.parseInt(s[0].split("/")[1]);
    int day_sys = Integer.parseInt(s[0].split("/")[2]);

    int hour_sys = Integer.parseInt(s[1].split(":")[0]);
    int min_sys = Integer.parseInt(s[1].split(":")[1]);

    System.out.println("year_sys  => " + year_sys);
    System.out.println("month_sys  => " + month_sys);
    System.out.println("day_sys  => " + day_sys);

    System.out.println("hour_sys  => " + hour_sys);
    System.out.println("min_sys  => " + min_sys);

12

형식이있는 현재 날짜 및 시간의 경우

자바에서

Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String strDate = sdf.format(c.getTime());
Log.d("Date","DATE : " + strDate)

코 틀린에서

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    val current = LocalDateTime.now()
    val formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy. HH:mm:ss")
    var myDate: String =  current.format(formatter)
    Log.d("Date","DATE : " + myDate)
} else {
    var date = Date()
    val formatter = SimpleDateFormat("MMM dd yyyy HH:mma")
    val myDate: String = formatter.format(date)
    Log.d("Date","DATE : " + myDate)
}

날짜 포맷터 패턴

"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

공동 기고 해 주셔서 감사합니다. 이전 답변 36 개에 아직 포함되지 않은 내용을 제공하고 있습니까? 어쨌든 당신은 여전히 ​​악명 높고 오래 된 구식 SimpleDateFormat클래스를 사용하고 있습니다. 심지어 오레오하기 전에, 당신은 대신 사용할 수있다 필요가 없습니다 ThreeTenABP , java.time의 백 포트, 현대 자바 날짜와 시간 API를.
Ole VV

11

android.os.SystemClock을 사용할 수도 있습니다. 예를 들어 SystemClock.elapsedRealtime ()은 전화가 잠들 때 더 정확한 시간을 알려줍니다.


10

현재 날짜가 필요한 경우 :

Calendar cc = Calendar.getInstance();
int year = cc.get(Calendar.YEAR);
int month = cc.get(Calendar.MONTH);
int mDay = cc.get(Calendar.DAY_OF_MONTH);
System.out.println("Date", year + ":" + month + ":" + mDay);

현재 시간이 필요한 경우 :

 int mHour = cc.get(Calendar.HOUR_OF_DAY);
 int mMinute = cc.get(Calendar.MINUTE);
 System.out.println("time_format" + String.format("%02d:%02d", mHour , mMinute));

9

사용자 정의 된 시간 및 날짜 형식의 경우 :

    SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZZZZZ",Locale.ENGLISH);
    String cDateTime=dateFormat.format(new Date());

출력 형식은 다음과 같습니다 : 2015-06-18T10 : 15 : 56-05 : 00



8
Time now = new Time();
now.setToNow();

이것도 저에게 효과적입니다.


8

다음을 사용하여 날짜를 얻을 수 있습니다.

Time t = new Time(Time.getCurrentTimezone());
t.setToNow();
String date = t.format("%Y/%m/%d");

이렇게하면 "2014/02/09"와 같이 멋진 형식으로 결과가 표시됩니다.


매개 변수가없는 생성자 Time t = new Time();는 기본 시간대를 사용합니다. 내 경험에 따르면 기본값은 현재입니다.
William T. Mallard

7

글쎄, 나는 API에 의한 몇 가지 대답에 문제가 있었 으므로이 코드를 통합하여 사람들에게 도움이되기를 바랍니다.

    Time t = new Time(Time.getCurrentTimezone());
    t.setToNow();
    String date1 = t.format("%Y/%m/%d");

    Date date = new Date(System.currentTimeMillis());
    SimpleDateFormat dateFormat = new SimpleDateFormat("hh:mm aa",
            Locale.ENGLISH);
    String var = dateFormat.format(date);
    String horafecha = var+ " - " + date1;

    tvTime.setText(horafecha);

출력 : 03:25 PM-2017/10/03


7

다음 코드를 간단히 사용할 수 있습니다.

 DateFormat df = new SimpleDateFormat("HH:mm"); // Format time
 String time = df.format(Calendar.getInstance().getTime());

 DateFormat df1 = new SimpleDateFormat("yyyy/MM/dd"); // Format date
 String date = df1.format(Calendar.getInstance().getTime());

6

이 시도

String mytime = (DateFormat.format("dd-MM-yyyy hh:mm:ss", new java.util.Date()).toString());

이것은 완벽한 하나의 라이너와 우아한 솔루션입니다. 다른 답변과 같이 불필요하게 긴 솔루션은 아니지만 필요한 모든 것입니다.
zeeshan

5

아래 방법은 현재 날짜와 시간을 문자열로 반환합니다. 실제 시간대에 따라 다른 시간대를 사용하십시오 .GMT를 사용했습니다.

public static String GetToday(){
    Date presentTime_Date = Calendar.getInstance().getTime();
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
    return dateFormat.format(presentTime_Date);
}

4

새 API에 따라 캘린더 클래스를 사용해야합니다. 날짜 클래스는 더 이상 사용되지 않습니다.

Calendar cal = Calendar.getInstance();

String date = ""+cal.get(Calendar.DATE)+"-"+(cal.get(Calendar.MONTH)+1)+"-"+cal.get(Calendar.YEAR);

String time = ""+cal.get(Calendar.HOUR_OF_DAY)+":"+cal.get(Calendar.MINUTE);

4

아래 코드를 사용해보십시오.

 Date date = new Date();
 SimpleDateFormat dateFormatWithZone = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",Locale.getDefault());  
 String currentDate = dateFormatWithZone.format(date);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.