我正在处理一个有日期选择器的注册表单。当用户选择日期时,TextView会以格式(MM-dd-YYYY)更新显示所选日期。当用户单击提交按钮时,它将表单数据传递到mysql数据库。它显然没有插入日期,因为它的格式不正确(yyyy-MM-dd)。我尝试使用SimpleDateFormat方法,但无法使其工作。有人可以帮我理解如何格式化日期吗?
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);
}
}
答案 0 :(得分: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);
您可以通过跟踪在TextView
被点击时更新的Date
或Calendar
引用来避免转换onDateSet(...)
中的日期字符串。然后,该实例将有效地成为支持TextView
的数据模型以及最终插入数据库的值。
话虽如此,我个人更喜欢以最基本的表示形式存储/保存日期:作为long
值。这些值通常更容易使用(因为您避免任何解析),并且通常可以在各种平台之间更好地互换。最后,存储日期应该与实际数据有关 - 任何特定的表示/格式只会使未来的事情复杂化。