如何使用 DatePicker 和 TimePicker (Android Studio) 在数据库中存储日期和时间?
Posted
技术标签:
【中文标题】如何使用 DatePicker 和 TimePicker (Android Studio) 在数据库中存储日期和时间?【英文标题】:How to store date and time in the database using DatePicker and TimePicker (Android Studio)? 【发布时间】:2019-02-27 23:08:34 【问题描述】:我正在尝试构建一个应用程序,用户可以在其中选择日期和时间(通过 DatePicker 和 TimePicker),然后按下一个名为“添加考试”的按钮,该按钮将这些信息存储到 SQLite 数据库中。当用户点击“查看考试”时,日期和时间应该与存储在数据库中的其他信息一起显示在屏幕上。
我收到“date.getText().toString(), time1.getText().toString()”行错误,其中“getText”未被识别。
public class Exam extends AppCompatActivity
DatabaseManager myDb;
EditText un, loc3;
DatePicker date;
TimePicker time1;
int year;
int monthOfYear;
int dayOfMonth;
Button btnAddExam;
Button btnViewExam;
Button btnDeleteExam;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main5);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setTitle(null);
myDb = new DatabaseManager(this);
un = (EditText)findViewById(R.id.un);
date = (DatePicker)findViewById(R.id.date);
loc3 = (EditText)findViewById(R.id.loc3);
time1 = (TimePicker) findViewById(R.id.time1);
btnAddExam = (Button)findViewById(R.id.addexam);
btnViewExam = (Button)findViewById(R.id.viewexam);
btnDeleteExam = (Button)findViewById(R.id.deleteexam);
AddExam();
ViewExam();
DeleteExam();
public void AddExam()
btnAddExam.setOnClickListener(
new View.OnClickListener()
@RequiresApi(api = Build.VERSION_CODES.O)
@Override
public void onClick(View v)
boolean isInserted = myDb.insertDataExam(
un.getText().toString(),
loc3.getText().toString(),
date.getText().toString(),
time1.getText().toString()
);
if(isInserted == true)
Toast.makeText(Exam.this,"Data Inserted",Toast.LENGTH_LONG).show();
else
Toast.makeText(Exam.this,"Data not Inserted",Toast.LENGTH_LONG).show();
);
public void ViewExam()
btnViewExam.setOnClickListener(
new View.OnClickListener()
@Override
public void onClick(View v)
Cursor res = myDb.getAllDataExam();
if(res.getCount() == 0)
message("Error","Nothing found");
return;
StringBuffer buffer = new StringBuffer();
while (res.moveToNext())
buffer.append("Unit Name: "+ res.getString(0)+"\n\n");
buffer.append("Date: "+ res.getString(1)+"\n");
buffer.append("Time: "+ res.getString(2)+"\n");
buffer.append("Location: "+ res.getString(3)+"\n\n");
// Show all data
message("Exam Information",buffer.toString());
);
public void DeleteExam()
btnDeleteExam.setOnClickListener(
new View.OnClickListener()
@Override
public void onClick(View v)
);
public void message(String title,String Message)
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setCancelable(true);
builder.setTitle(title);
builder.setMessage(Message);
builder.show();
@Override
public boolean onCreateOptionsMenu(Menu menu)
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.screen5_menu, menu);
return true;
@Override
public boolean onOptionsItemSelected(MenuItem item)
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in androidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.home5)
Intent intent = new Intent(Exam.this, Home.class);
startActivity(intent);
return true;
return super.onOptionsItemSelected(item);
【问题讨论】:
您不能直接从 datePicker 获取日期。你必须实现onDateSet()
方法。它将返回您可以使用的日期字符串
【参考方案1】:
您必须单独获取部分日期
int day = datePicker.getDayOfMonth();
int month = datePicker.getMonth();
int year = datePicker.getYear();
查看更多here
【讨论】:
以上是关于如何使用 DatePicker 和 TimePicker (Android Studio) 在数据库中存储日期和时间?的主要内容,如果未能解决你的问题,请参考以下文章
Angular 8 - 如何使用 ngxbootstrap/datepicker 仅显示日期和月份
如何使用 DatePicker 和 TimePicker (Android Studio) 在数据库中存储日期和时间?
如何使用 bootstrap-datepicker 更新多个输入
如何使用 setAttribute 方法和 Selenium 和 Python 更改 Datepicker 的隐藏元素的日期?