2012-10-25 53 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。

請幫我看看實際的日期。我需要的是Sdk日期。

+1

什麼,它應該返回? –

+0

謝謝!但亞歷克斯已經幫助我了。 – Eduardoxvii

回答

12

使用SimpleDateFormat

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

您正在使用常數與Calendar.get()方法一起使用。

+0

男人!工作!!!!!你是最棒的!!!! – Eduardoxvii

+3

不,看來我不是喬恩Skeet ;-) – Alex

+0

@亞歷克斯,但越來越接近:) – ppeterka

15

Calendar.YEARCalendar.MONTHCalendar.DAY_OF_MONTHint常數(只是仰望在API doc)...

所以,作爲@Alex發佈,創建一個格式化的StringCalendar實例,你應該使用的SimpleDateFormat。

然而,如果您需要特定領域的數字表示,使用get(int)功能:

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

警告!月份從0開始!因爲這個,我犯了一些錯誤!

+0

+1的事實,從0 – Alex

+0

開始+1的警告。關於這個最愚蠢的部分是Calendar.MONTH從零開始,但是DatePickerDialog對一年中的月份沒有輸入。打定主意android /: – zarazan

+0

這個評論是我的詭計的解決方案 - 「警告!月份從0開始!我犯了一些錯誤,因爲這個!」 爲什麼這麼搞笑,月份從0到11,而不是從1..12) –

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想要修復他的代碼。我給了他他的修復。我添加了一個便條,他可能想看看日期。你建議SimpleDateFormat,但你完全誤解了。 SimpleDateFormat現在不會爲您提供日期時間,它僅格式化給定的日期時間。那麼你在哪裏建議從現在開始獲取日期時間? 「日期」或「日曆」?而你-1我的答案呢?令人難以置信...... – ADTC

+0

當日期時間到達時,Date保證到最接近的毫秒,比日曆更好。就實際目的而言,沒有什麼不可靠的。另外值得注意的是,我只是更新了答案,以表明當我需要格式化日期時,我不會依賴'Date.toString()'。我使用原始的Date對象。 – ADTC