Android 将日期选择器和时间选择器对话框中的日期和时间存储到MySQL
我正在创建一个应用程序,希望客户端从DatePicker中选择日期和时间,并以datetime格式将其存储到SQL server。有什么想法吗?因为我使用了Android 将日期选择器和时间选择器对话框中的日期和时间存储到MySQL,android,mysql,datetime,Android,Mysql,Datetime,我正在创建一个应用程序,希望客户端从DatePicker中选择日期和时间,并以datetime格式将其存储到SQL server。有什么想法吗?因为我使用了SimpleDataFormat,但它不起作用。看看ad包装器类,但在DAO级别,java端应该是 从 看看广告包装器类,但在DAO级别,java端应该是 从 实际上,格式化日期和时间在sql中很重要 首先,, 您必须考虑从日期选择器获取的日期格式(通常是我们向用户显示的格式): 常数:: public static final String
SimpleDataFormat
,但它不起作用。看看ad包装器类,但在DAO级别,java端应该是
从
看看广告包装器类,但在DAO级别,java端应该是 从
实际上,格式化日期和时间在sql中很重要 首先,, 您必须考虑从日期选择器获取的日期格式(通常是我们向用户显示的格式): 常数::
public static final String DATE_FORMAT = "MM/dd/yyyy";
public static final String SQL_DATETIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
public static final String SQL_DATE_FORMAT = "yyyy-MM-dd";
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT, Locale.US);
SimpleDateFormat rdf = new SimpleDateFormat(SQL_DATE_FORMAT,
Locale.US);
SimpleDateFormat tdf = new SimpleDateFormat(SQL_DATETIME_FORMAT,
Locale.US);
日期选择器::
public static class DatePickerFragment extends DialogFragment implements
DatePickerDialog.OnDateSetListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
Bundle data = this.getArguments();
if (data.getBoolean("isSelected")) {
year = data.getInt("year") + 1900;
month = data.getInt("month");
day = data.getInt("day");
}
return new DatePickerDialog(getActivity(), this, year, month, day);
}
public void onDateSet(DatePicker view, int year, int month, int day) {
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT, Locale.US);
@SuppressWarnings("deprecation")
String formatedDate = sdf.format(new Date(year - 1900, month, day));
((BaseActivity) getActivity()).mValuePickListener.onPickedValue(
formatedDate, DIALOG_DATE_PICKER);
}
}
现在,将此格式转换为mysql接受的格式以存储日期和时间:
Date selectedDate = new Date();
if (!date.getText().toString().trim().equalsIgnoreCase("")) {
selectedDate = sdf.parse(date.getText().toString());
}
String sqlDate = rdf.format(selectedDate);
PS::您还可以使用时间戳(long)在数据库中存储时间在sql中实际格式化日期和时间事项
public void onDateSet(DatePicker view, int year, int month, int day) throws SQLException {
java.sql.Date myDate = (java.sql.Date)new java.util.Date(year, month, day);
PreparedStatement mySqlInsertStatement = connection.prepareStatement(sqlStatement, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE);
mySqlInsertStatement.setDate(1, myDate);
if (mySqlInsertStatement.executeUpdate() != 1) { // we have a problem
}
}
首先,,
您必须考虑从日期选择器获取的日期格式(通常是我们向用户显示的格式):
常数::
public static final String DATE_FORMAT = "MM/dd/yyyy";
public static final String SQL_DATETIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
public static final String SQL_DATE_FORMAT = "yyyy-MM-dd";
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT, Locale.US);
SimpleDateFormat rdf = new SimpleDateFormat(SQL_DATE_FORMAT,
Locale.US);
SimpleDateFormat tdf = new SimpleDateFormat(SQL_DATETIME_FORMAT,
Locale.US);
日期选择器::
public static class DatePickerFragment extends DialogFragment implements
DatePickerDialog.OnDateSetListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
Bundle data = this.getArguments();
if (data.getBoolean("isSelected")) {
year = data.getInt("year") + 1900;
month = data.getInt("month");
day = data.getInt("day");
}
return new DatePickerDialog(getActivity(), this, year, month, day);
}
public void onDateSet(DatePicker view, int year, int month, int day) {
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT, Locale.US);
@SuppressWarnings("deprecation")
String formatedDate = sdf.format(new Date(year - 1900, month, day));
((BaseActivity) getActivity()).mValuePickListener.onPickedValue(
formatedDate, DIALOG_DATE_PICKER);
}
}
现在,将此格式转换为mysql接受的格式以存储日期和时间:
Date selectedDate = new Date();
if (!date.getText().toString().trim().equalsIgnoreCase("")) {
selectedDate = sdf.parse(date.getText().toString());
}
String sqlDate = rdf.format(selectedDate);
PS::您还可以使用时间戳(long)在数据库中存储时间
public void onDateSet(DatePicker view, int year, int month, int day) throws SQLException {
java.sql.Date myDate = (java.sql.Date)new java.util.Date(year, month, day);
PreparedStatement mySqlInsertStatement = connection.prepareStatement(sqlStatement, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE);
mySqlInsertStatement.setDate(1, myDate);
if (mySqlInsertStatement.executeUpdate() != 1) { // we have a problem
}
}
返回INSERT的行计数,如果发生可怕的事情,可以抛出一个
返回INSERT的行计数,如果发生可怕的事情,可以抛出一个