2012-10-25 3 views
5

이 코드가 0001-02-05를 반환하는 이유는 무엇입니까? 캘린더가 잘못된 현재 날짜를 반환합니다. android

public static String getNowDate() throws ParseException 
{   
    return Myformat(toFormattedDateString(Calendar.getInstance())); 
} 

나는에 코드를 변경 :

public static String getNowDate() throws ParseException 
{   
    Calendar temp=Calendar.getInstance(); 
    return temp.YEAR+"-"+temp.MONTH+"-"+temp.DAY_OF_MONTH; 
} 

그리고 지금은 1-2-5를 반환합니다.

실제 날짜를 알려주십시오. 내가 필요한 건 SDDN 데이트 야.

+1

가 무엇을 반환해야합니까? –

+0

고마워요! 하지만 알렉스, 이미 도와 줘. – Eduardoxvii

답변

12

당신은 상수를 사용하는 SimpleDateFormat

new SimpleDateFormat("yyyy-MM-dd").format(Calendar.getInstance().getTime()); 

사용은 Calendar.get() 방법을 사용할 수 있습니다.

+0

남자! 일했다 !!!!! 너는 최고야 !! – Eduardoxvii

+3

아니요, 저는 Jon Skeet이 아닙니다 .--) – Alex

+0

@Alex하지만 점점 가까워지고 있습니다 :) – ppeterka

15

Calendar.YEAR, Calendar.MONTH, Calendar.DAY_OF_MONTH는 @ 알렉스가 게시 된

그래서,하는 Calendar 인스턴스의 출력 포맷 String, 당신은 SimpleDateFormat에 사용해야 만들 ... (단지 API doc에서 찾아 볼) int 상수이다.

int year = temp.get(Calendar.YEAR); 
int month = temp.get(Calendar.MONTH); 
int dayOfMonth = temp.get(Calendar.DAY_OF_MONTH); 

경고 :

은 특정 필드의 숫자 표현을 필요로하지만 경우 get(int) 기능을 사용! 달이 0부터 시작됩니다 !!! 이 때문에 몇 가지 실수를 저질렀습니다!

+0

+1 사실은 경고는 0 – Alex

+0

+1부터 시작합니다. 이것에 대해 가장 멍청한 부분은 Calendar.MONTH가 0에서 시작하지만 DatePickerDialog의 입력은 한 달의 달에 해당하지 않는다는 것입니다. 너의 마음을 android/: – zarazan

+0

이 의견은 나의 딱딱한 소리에 대한 해결책이었다 - "경고! 달은 0부터 시작한다! 나는 이것 때문에 약간의 실수를했다!" 왜 이런 일이 재미 있었는지, 1 월 11 일이 아니라 1 월 11 일에 시작하는 월) –

2

SimpleDateFormat을 사용하지 않으시겠습니까?

public static String getNowDate() { 
    return new SimpleDateFormat("yyyy-MM-dd").format(new Date()); 
} 
0

잘못하고 있습니다. 로 변경 또한

return temp.get(Calendar.YEAR)+"-"+ (temp.get(Calendar.MONTH)+1) +"-"+temp.get(Calendar.DAY_OF_MONTH); 

, 당신은 Date 조사 할 수 있습니다 :

Date dt = new Date(); 
//this will get current date and time, guaranteed to nearest millisecond 
System.out.println(dt.toString()); 
//you can format it as follows in your required format 
System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(dt)); 
+0

이것은 추한 것입니다. SimpleDateFormat은 OP가 필요로하는 것을 정확히 수행합니다 ... 그리고 Date.toString()은 의존하지 않습니다! – ppeterka

+0

와우, 정말요? OP는 코드를 수정하려고했습니다. 나는 그에게 그의 고침을 줬다. 그리고 Date를 살펴보고 싶다는 메모를 추가했습니다. SimpleDateFormat을 제안하고 있지만 완전히 오해하고 있습니다. SimpleDateFormat은 날짜 - 시간을 제공하지 않으며, 주어진 날짜 - 시간 형식 만 포맷합니다. 그럼 지금 어디서 날짜 시간을 얻으시겠습니까? '날짜'또는'캘린더'? 그리고 당신 -1 내 대답은? 믿을 수없는 ... – ADTC

+0

'Date'는 가장 가까운 밀리 초로 보장되어 날짜 - 시간을 얻었을 때'Calendar'보다 낫습니다.실용적인 목적으로는 신뢰할 수있는 것이 없습니다. 또한, 필자는 OP와 마찬가지로 형식화 된 날짜가 필요할 때'Date.toString() '에 전혀 의존하지 않을 것이라는 답변을 업데이트했습니다. 원래 'Date' 개체를 사용합니다. – ADTC

관련 문제