2017-04-10 40 views
0

我已經爲我的應用程序創建了這個datePicker,並且一旦用戶選擇了一個日期,我就將它設置爲顯示一個Toast。在我轉向其他任何事情之前,這只是一個測試,但是,當我選擇一個顯示錯誤年份的日期時。例如,當我選擇今天的日期時,Toast將顯示:「日期是:3917-04-10」。爲什麼我的android中的日期選擇器顯示年份錯誤?

public class SelectDateFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener 
{ 
SimpleDateFormat dateFormatter; 
Date start; 
String entered_Start; 

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) 
{ 
    final Calendar calendar = Calendar.getInstance(); 
    int yyyy = calendar.get(Calendar.YEAR); 
    int mm = calendar.get(Calendar.MONTH); 
    int dd = calendar.get(Calendar.DAY_OF_MONTH); 
    return new DatePickerDialog(getActivity(), this, yyyy, mm, dd); 
} 

public void onDateSet(DatePicker view, int yyyy, int mm, int dd) 
{ 
    start = new Date(yyyy,mm,dd); 
    dateFormatter = new SimpleDateFormat("yyyy-MM-dd"); 
    entered_Start = dateFormatter.format(start); 
    Toast.makeText(getActivity(), "Date is: "+ entered_Start, Toast.LENGTH_LONG).show(); 
} 
} 

任何幫助表示讚賞。

編輯:我修好了。我所要做的就是改變這一行:

start = new Date(yyyy,mm,dd); 

這一行:

start = calendar.getTime(); 
+0

你設置'dateFormat'?默認情況下,datepicker dateformat是'Default:「mm/dd/yy」' – funcoding

+0

您使用的不推薦使用的Date構造函數將1900年添加到年份。所以如果你通過2017年,你會得到一個在3917年的日期。如果你應該使用它(不推薦),你需要在2017年通過117。 –

回答

0

不使用new Date(yyyy,mm,dd);使用

Calendar c = Calendar.getInstance(); 
    c.set(Calendar.YEAR, yyyy); 
    c.set(Calendar.MONTH, mm); 
    c.set(Calendar.DAY_OF_MONTH, dd); 
    c.getTime(); 
0

使用Date構造已被棄用。 Here你可以看到,

This constructor was deprecated in API level 1. As of JDK version 1.1, replaced by Calendar.set(year + 1900, month, date) or GregorianCalendar(year + 1900, month, date) 

好喜歡你創建對話框之前使用的getter使用Calendar對象的制定者。可以使用new Date(yyyy - 1900,mm,dd)。但這很糟糕。

0

new Date()被廢棄了,你可以(最好)使用Calendar

您的代碼將是這樣的:

Calendar cal = Calendar.getInstance(); 
cal.set(Calendar.YEAR,yyyy); 
cal.set(Calendar.DAY_OF_MONTH,dd); 
cal.set(Calendar.MONTH,mm); 

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
entered_Start = sdf.format(cal.getTime()); 
Toast.makeText(getActivity(), "Date is: "+ entered_Start, Toast.LENGTH_LONG).show(); 
相關問題