2013-09-30 255 views
0

我正在使用具有日期選擇器的註冊表單。當用戶選擇一個日期時,TextView更新將以格式(MM-dd-YYYY)顯示選定的日期。當用戶點擊提交按鈕時,它將表單數據傳遞給mysql數據庫。它顯然不插入日期,因爲它沒有以(yyyy-MM-dd)的正確格式。我嘗試使用SimpleDateFormat方法,但無法使其工作。有人可以幫助我瞭解如何格式化日期嗎?將日期格式化爲mysql格式

datedob = (TextView) findViewById(R.id.reg_dob); 

String dob = datedob.getText().toString(); 

我的日期選擇器代碼:

public void populateSetDate(int year, int month, int day) { 
    datedob = (TextView)findViewById(R.id.reg_dob); 
    datedob.setText(month + "-" + day + "-" + year); 
} 
@TargetApi(Build.VERSION_CODES.HONEYCOMB) 
public class SelectDateFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener { 
    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     final Calendar calendar = Calendar.getInstance(); 
     int yy = calendar.get(Calendar.YEAR); 
     int mm = calendar.get(Calendar.MONTH); 
     int dd = calendar.get(Calendar.DAY_OF_MONTH); 
     return new DatePickerDialog(getActivity(), this, yy, mm, dd); 
    } 

    public void onDateSet(DatePicker view, int yy, int mm, int dd) { 
     populateSetDate(yy, mm+1, dd); 
    } 

} 

回答

1

需要兩個DateFormat實例:

  • 之一,從您TextView解析日期字符串。
  • 一個將解析的日期格式化爲所需的表示形式。

這看起來有點像這個問題,假設您TextView包含選定日期的"MM-dd-yyyy"格式化表示:

String dobSource = datedob.getText().toString(); 
Date dobDate = new SimpleDateFormat("MM-dd-yyyy").parse(dobSource); 
String dobTarget = new SimpleDateFormat("yyyy-MM-dd").format(dobDate); 

可以潛在地避免通過保持Date的軌道從TextView轉換日期字符串或Calendar參考,每當onDateSet(...)受到影響時更新參考。那麼這個實例將有效地成爲支持TextView的數據模型以及最終被插入到數據庫中的值。

這就是說,我個人更傾向於在最基本的表示中存儲/保留日期:作爲long的值。這些值通常更容易處理(因爲您避免任何解析),並且通常可以在各種平臺之間更好地互換。最後,存儲日期應該全部是關於實際數據 - 任何具體的表示/格式只會使事情進一步複雜化。

+0

所以你說,從onDateSet方法拉日期會比從TextView中拉出日期更好?如果是這樣,我將如何拉它? – Carbongixxer

+0

我想我已經在上面的答案中解釋了它的要點:創建一個'Calendar'實例,每次通過'onDateSet(...)'進入新值。然後,您可以將它用作「TextView」和最終插入到數據庫中的值的後備數據模型。請注意,這只是我會考慮的方法 - 它不是* only *解決方案。由你決定如何實際執行。 –