Android에서 현재 날짜를 얻으려면 어떻게해야합니까?


165

다음 코드를 작성했습니다

Date d = new Date();
CharSequence s  = DateFormat.format("MMMM d, yyyy ", d.getTime());

하지만 매개 변수를 묻습니다. 현재 날짜를 문자열 형식으로 원합니다.

처럼

28-Dec-2011

그래서를 통해 설정할 수있는 TextView,

약간의 설명이 필요하다고 생각되면 Android 개발을 처음 사용합니다.


1
DateFormat2011 년에이 질문을 받았을 때 클래스를 사용하는 것은 괜찮 았지만, 그 클래스와 그 서브 클래스 SimpleDateFormat는 항상 번거롭고 오래되었습니다. 나는 그것들을 사용하지 말고 현대 Java 날짜 및 시간 API 인 java.time을 살펴 보는 것이 좋습니다 .
Ole VV

답변:


389

SimpleDateFormat클래스를 사용하여 날짜 형식을 원하는 형식으로 사용할 수 있습니다 .

예제에 대한 아이디어를 얻을 수있는이 링크를 확인하십시오.

예를 들면 다음과 같습니다.

String dateStr = "04/05/2010"; 
 
SimpleDateFormat curFormater = new SimpleDateFormat("dd/MM/yyyy"); 
Date dateObj = curFormater.parse(dateStr); 
SimpleDateFormat postFormater = new SimpleDateFormat("MMMM dd, yyyy"); 
 
String newDateStr = postFormater.format(dateObj); 

최신 정보:

자세한 예제는 here입니다 .이 예제를 통해 SimpleDateFormat 클래스의 개념을 이해하는 것이 좋습니다.

마지막 해결책:

Date c = Calendar.getInstance().getTime();
System.out.println("Current time => " + c);

SimpleDateFormat df = new SimpleDateFormat("dd-MMM-yyyy", Locale.getDefault());
String formattedDate = df.format(c);

Calendar 클래스 대신 System.currentTimeMillis () 메서드 또는 Data 클래스를 사용할 수 있습니다. 더 빨라야합니다. stackoverflow.com/questions/368094/…
cjayem13 2013 년

API 24가 필요합니다!
ueen

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

@ueen 안드로이드가 아닌 자바 패키지에서 가져 오십시오.
Sadda Hussain

벌금 작동합니까? 현재? (2020)
크로스

152

yyyy-MM-dd 형식으로 현재 날짜를 가져 오는 간단한 한 줄 코드 는 원하는 형식을 사용할 수 있습니다.

String date = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).format(new Date());

7
다음과 같이 변경해야합니다. String currentDate = new SimpleDateFormat ( "dd-MM-yyyy", Locale.getDefault ()). format (new Date ());
Bart Burg

1
우와, 고마워요! 가상 머신의 날짜가 올바르지 않았기 때문에 가상 장치의 날짜가 하루 전에 표시되는 이유를 알았을 수도 있지만 이것은 효과가 있습니다. 실제 전화에서 테스트했을 때 놀라운 결과를 냈습니다. 그래서 당신에게 @Pratik 감사합니다
웨슬리 프랭크는

30

이것은 자바 기반이므로 안드로이드와 관련이 없으므로 사용할 수 있습니다.

private String getDateTime() { 
   DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
   Date date = new Date(); 
   return dateFormat.format(date); 
}

오류, 새로운 날짜 ()는 유효하지 않은 인수를 요구하고, 당신이 SimpleDateFormat에 함께 DateFormat의 초기화되어 있습니다
Chatar 비어 Suthar

12
 public String giveDate() {
    Calendar cal = Calendar.getInstance();
    SimpleDateFormat sdf = new SimpleDateFormat("EEE, MMM d, yyyy");
    return sdf.format(cal.getTime());
 }

11

이 시도,

SimpleDateFormat timeStampFormat = new SimpleDateFormat("yyyyMMddHHmmssSS");
Date myDate = new Date();
String filename = timeStampFormat.format(myDate);

그것은 (긴) 새로운 날짜에 추가 인수를 말하고있다
Chatar 비어 Suthar

new Date ()에서 긴 매개 변수를 요청할 수 없습니다.
Lucifer

개인 키 워크를 사용하고 안드로이드 프로젝트에서 코드를 실행하는 이유는 무엇입니까?
Chatar Veer Suthar

해당 "비공개"를 제거하십시오. 예, 결과를 얻습니다. 토론이 있습니다. 왜 당신이 매우 간단한 질문에 문제를 겪고 있는지 모르겠습니다.
Lucifer

7
CharSequence s  = DateFormat.getDateInstance().format("MMMM d, yyyy ");

먼저 인스턴스가 필요합니다


경우에는, getDateInstance이 인식하지
Chatar 비어 Suthar

당신은 자바 문서를 보면 그것은해야 docs.oracle.com/javase/6/docs/api/java/text/... ), java.util.Locale의를
Marthyn Olthof

@Veer, 실수로 java.text.DateFormat 대신 android.text.format.DateFormat을 가져온 경우 getDateInstance ()가 인식되지 않습니다
gcbound

7

매력처럼 작동하고 보너스로 String으로 변환합니다.)

SimpleDateFormat currentDate = new SimpleDateFormat("dd/MM/yyyy");
      Date todayDate = new Date();
    String thisDate = currentDate.format(todayDate);



4
SimpleDateFormat df = new SimpleDateFormat("dd-MMM-yyyy");
String date = df.format(Calendar.getInstance().getTime());

4

나는 현대 답변을 제공하고 있습니다.

java.time 및 ThreeTenABP

현재 날짜를 얻으려면

    LocalDate today = LocalDate.now(ZoneId.of("America/Hermosillo"));

이것은 LocalDate프로그램에서 날짜를 유지하기 위해 사용해야 하는 오브젝트를 제공합니다 . A LocalDate는 시간이없는 날짜입니다.

날짜를 사용자에게 표시해야하는 경우에만 사용자의 로캘에 적합한 문자열로 형식을 지정하십시오.

    DateTimeFormatter userFormatter
            = DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG);
    System.out.println(today.format(userFormatter));

이 영어 코드를 오늘 미국 영어 로케일에서 실행했을 때 출력 결과는 다음과 같습니다.

2019 년 7 월 13 일

더 짧게하려면 FormatStyle.MEDIUM또는을 지정하십시오 FormatStyle.SHORT. DateTimeFormatter.ofLocalizedDate기본 서식 로캘을 사용하므로 요점은 로케일마다 다른 해당 로케일에 적합한 출력을 제공한다는 것입니다.

사용자에게 출력 형식에 대한 특별한 요구 사항이있는 경우 형식 패턴 문자열을 사용하십시오.

    DateTimeFormatter userFormatter = DateTimeFormatter.ofPattern(
            "d-MMM-u", Locale.forLanguageTag("ar-AE"));

2019 년 13 월 14 일

최신 Java 날짜 및 시간 API 인 java.time을 사용하고 권장합니다. DateFormat, SimpleDateFormat, DateCalendar질문에 사용 및 / 또는 다른 답변의 많은 잘못 설계 및 긴 구식이된다. 그리고 java.time은 작업하기가 훨씬 좋습니다.

질문 : Android에서 java.time을 사용할 수 있습니까?

예. java.time은 이전 및 최신 Android 장치에서 잘 작동합니다. 최소한 Java 6 만 있으면됩니다 .

  • Java 8 이상 및 최신 Android 장치 (API 레벨 26부터)에는 최신 API가 내장되어 있습니다.
  • Java 6 및 7에서는 최신 클래스의 백 포트 인 ThreeTen Backport를 가져옵니다 (JSR 310의 경우 ThreeTen; 하단의 링크 참조).
  • (구형) Android에서는 Android 버전의 ThreeTen Backport를 사용합니다. 이름이 ThreeTenABP입니다. org.threeten.bp하위 패키지 를 사용 하여 날짜 및 시간 클래스를 가져와야합니다 .

연결


아주 좋은 답변입니다! 그러나 ThreeTen LocalDateTime을 Date로 어떻게 변환 할 수 있습니까? Firebase를 사용하고 있으며 타임 스탬프를 저장하기위한 전제 조건은 Date 객체입니다.
H.Karatsanov

@ H.Karatsanov 백 포트를 사용하는 경우 : DateTimeUtils.toDate(yourLocalDateTime.atZone(ZoneId.systemDefault()).toInstant()). 내장 java.time을 사용하는 경우 : Date.from(yourLocalDateTime.atZone(ZoneId.systemDefault()).toInstant()). java.time.LocalDateTime과 java.util.Date 사이의 변환을 참조하십시오 . JodaStephen의 권위있는 답변 이 있으며 백 포트 사용을 보여주는 답변 도 있습니다 .
Ole VV

4
 public static String getcurrentDateAndTime(){

        Date c = Calendar.getInstance().getTime();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd");
        String formattedDate = simpleDateFormat.format(c);
        return formattedDate;
    }

// String currentdate=  getcurrentDateAndTime();

그것은 이미 다른 답변에없는 질문에 실질적으로 기여하고 있습니까 (예 : 문자열 형식으로 현재 날짜를 원28-Dec-2011 하십니까)? 어쨌든 그것은 여전히 ​​악명 높고 오래 된 구식 SimpleDateFormat클래스를 사용하고 있습니다. 더 이상 답변이 필요하지 않습니다.
Ole VV

모범 사례로 두 번째 매개 변수 인 locale SimpleDateFormat을 추가합니다. simpleDateFormat = new SimpleDateFormat ( "yyyy / MM / dd", Locale.ENGLISH);
Rucha Bhatt Joshi

3
Calendar cal = Calendar.getInstance();      
Calendar dt = Calendar.getInstance(); 
dt.clear();
dt.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH),cal.get(Calendar.DATE)); 
return dt.getTime();        

3

Paresh의 솔루션에 대한 간단한 조정 :

Date date = Calendar.getInstance().getTime();
SimpleDateFormat df = new SimpleDateFormat("dd-MMM-yyyy");
String formattedDate = df.format(date);

3
Calendar c = Calendar.getInstance();
int day = c.get(Calendar.DAY_OF_MONTH);
int month = c.get(Calendar.MONTH);
int year = c.get(Calendar.YEAR);
String date = day + "/" + (month + 1) + "/" + year;

Log.i("TAG", "--->" + date);

2

다음 코드를 사용하여 원하는 형식으로 날짜를 얻을 수 있습니다.

String date = String.valueOf(android.text.format.DateFormat.format("dd-MM-yyyy", new java.util.Date()));

하나의 라이너가 좋고 낮은 SDK에서 작동합니다. 몇 자 더 짧은 DateFormat.format ( "dd-MM-yyyy", 새로운 java.util.Date ()). toString ()
Jeffrey

1
Date c = Calendar.getInstance().getTime();
System.out.println("Current time => " + c);

SimpleDateFormat df = new SimpleDateFormat("dd-MMM-yyyy");
String formattedDate = df.format(c);

이것은 가장 좋은 대답입니다 ...


0

현재 로캘 (장치 로캘!)에서 현재 날짜를 가져 오는 가장 간단한 방법 :

String currentDate = DateFormat.getDateInstance().format(Calendar.getInstance().getTime());

다른 스타일의 날짜를 원한다면 다음을 사용하십시오 getDateInstance(int style).

DateFormat.getDateInstance(DateFormat.FULL).format(Calendar.getInstance().getTime());

기타 스타일 : DateFormat.LONG, DateFormat.DATE_FIELD, DateFormat.DAY_OF_YEAR_FIELD, 등 (사용 CTRL+Space그들 모두를 보려면)

시간이 필요한 경우 :

String currentDateTime = DateFormat.getDateTimeInstance(DateFormat.DEFAULT,DateFormat.LONG).format(Calendar.getInstance().getTime());

0
  public static String getDateTime() {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MMMM dd, yyyy HH:mm:ss", Locale.getDefault());
        Date date = new Date();
        return simpleDateFormat.format(date);
    }

0

이 코드 링크로 시도하면 날짜와 시간에 관계없이 모든 경우에 대한 정확한 정답입니다. 또는 앱의 요구 및 요구 사항에 따라 날짜와 시간을 사용자 정의하십시오.

이 링크를 사용해보십시오. 이 링크로 시도


0

CalendarView를 사용하여 캘린더 앱을 작성했으며 내 코드입니다.

CalendarView cal = (CalendarView) findViewById(R.id.calendar);
cal.setDate(new Date().getTime());

'calendar'필드는 내 CalendarView입니다. 수입품 :

import android.widget.CalendarView;
import java.util.Date;

오류없이 현재 날짜가 있습니다.


0

이것은 내가 사용한 코드입니다.

             Date date = new Date();  // to get the date
             SimpleDateFormat df = new SimpleDateFormat("dd-MM-yyyy"); // getting date in this format
             String formattedDate = df.format(date.getTime());
             text.setText(formattedDate);

0

나는 이미 이것을 사용했다 :

Date What_Is_Today=Calendar.getInstance().getTime();
SimpleDateFormat Dateformat = new SimpleDateFormat("dd-MM-yyyy");
String Today=Dateformatf.format(What_Is_Today);

Toast.makeText(this,Today,Toast.LENGTH_LONG).show();

처음에 나는 시간을 얻은 다음 간단한 날짜 형식 (19-6-2018과 같은 날짜를 얻기 위해)을 선언 한 다음 형식을 사용하여 날짜를 문자열로 변경합니다.


0

간단한 날짜 형식을 얻으려면 한 줄의 코드 만 사용하십시오.

SimpleDateFormat.getDateInstance().format(Date())

출력 : 18-5 월 2020

SimpleDateFormat.getDateTimeInstance().format(Date())

출력 : 18-May-2020 11:00:39 AM

SimpleDateFormat.getTimeInstance().format(Date())

출력 : 11:00:39 AM

이 답변 이이 날짜 및 시간 형식을 얻기에 충분하기를 바랍니다 ... :)


긴 구식과 악명 귀찮은 사용하는 젊은 사람들을 가르 칠하지 마십시오 SimpleDateFormatDateFormat클래스를. 적어도 첫 번째 옵션은 아닙니다. 그리고 예약 없이는 아닙니다. 오늘날 우리는 java.time최신 Java 날짜 및 시간 API 와 그 기능 이 훨씬 뛰어납니다 DateTimeFormatter. 예, Android에서 사용할 수 있습니다. 이전 Android의 경우 Android 프로젝트에서 ThreeTenABP를 사용하는 방법을 참조하십시오 .
Ole VV

-1

이것은 내가 사용한 코드입니다 .

final Calendar c = Calendar.getInstance();
year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH);
day = c.get(Calendar.DAY_OF_MONTH);

// Set current date into textview
tvDisplayDate.setText(new StringBuilder()
    .append(month + 1).append("-") // Month is 0 based, add 1
    .append(day).append("-")
    .append(year).append("   Today is :" + thursday ) );

// Set current date into datepicker
dpResult.init(year, month, day, null);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.