2012-05-27 2 views
23

포맷 난 그냥 날짜과 같이 표시 할 :달력 날짜

Saturday, May 26, 2012 at 10:42 PM

가 여기에 지금까지 내 코드입니다 :

Calendar calendar = Calendar.getInstance(); 
String theDate = calendar.get(Calendar.MONTH) + " " + calendar.get(Calendar.DAY_OF_MONTH) + " " + calendar.get(Calendar.YEAR); 

lastclick.setText(getString(R.string.lastclick) + " " + theDate); 

이는 월, 일의 숫자를 보여줍니다, 그리고 올해는 더 좋은 방법이 있어야할까요? PHP의 date() 함수를 사용하는 것과 같은 간단한 방법이 있습니까?

+1

예. 왜 이렇게 어려운지 보지 마라. – scarhand

답변

14

필요에 따라 날짜 형식을 지정하려면 다음을 사용하십시오. 참고이 LINK

Calendar calendar = Calendar.getInstance(); 
lastclick.setText(getString(R.string.lastclick) + " " + String.format("%1$tA %1$tb %1$td %1$tY at %1$tI:%1$tM %1$Tp", calendar)); 

경우 staurday에 대한 % 1 $의 tA, %이 실제로 제대로 할 수 상당히 미묘한 문제가

+1

나는 실수로이 것을 upvoted지만, 나는 downvoting없이 upvote를 제거 할 수있는 것처럼 보이지 않는다. 이것은 필요하지 않다. 이 방법이 효과적이지만 아래의 방법은 더 간단하고 읽기가 훨씬 쉽습니다. – craned

71
Calendar calendar = Calendar.getInstance(); 
SimpleDateFormat format = new SimpleDateFormat("EEEE, MMMM d, yyyy 'at' h:mm a"); 
System.out.println(format.format(calendar.getTime())); 

위의 코드를 실행하면 현재 시간 (예 : Saturday, May 26, 2012 at 11:03 PM)이 출력됩니다.

자세한 내용은 Android documentation for SimpleDateFormat을 참조하십시오.

SimpleDateFormat의 형식 사양은 PHP의 date 기능과 유사하다 :

echo date("l, M j, Y \a\\t g:i A"); 

네 말이 맞아. Java 코드와 비교할 때 PHP 코드는 훨씬 간결합니다.

+0

코드에서 원하는 형식을 생성하지만 사용자의 시스템 설정에 따라 형식을 설정하려면 어떻게해야합니까? Windows에서는 C# 코드 DateTime.ToLongDateString()이이를 생성합니다. Android에서 같은 결과를 얻으려면 어떻게해야합니까? –

+1

로켈을 포함하는 솔루션에 대한 내 대답을 참조하십시오. – String

10

5 월 1 개 $ 결핵, 등등

및 ... 이 싸다는 다른 날짜를 보여주는 될 수 있다는 것을 의미 Calendar의 시간대 (

  • : 나는 모두를 해결 여기에 SO에 대한 다른 답변을 본 적이 없다 CAL)
  • 는이 디바이스의는 Date로 변환을 포함 Locale은 (형식 날짜에 "올바른"방법에 영향을 미치는)

은이 질문 로케일을 무시 이전 답변과 다른 답변 시간대를 무시합니다. 당신이하지 안드로이드 자신의 (혼동 명) android.text.format.DateFormat, 여기 java.text.DateFormat를 사용할 필요가

Calendar cal = Calendar.getInstance(); // the value to be formatted 
java.text.DateFormat formatter = java.text.DateFormat.getDateInstance(
     java.text.DateFormat.LONG); // one of SHORT, MEDIUM, LONG, FULL, or DEFAULT 
formatter.setTimeZone(cal.getTimeZone()); 
String formatted = formatter.format(cal.getTime()); 

참고 : 그래서 여기보다 완벽한, 일반적인 솔루션입니다.

관련 문제