Primero, el diagrama de efectos.
El método utilizado es hacer referencia a la biblioteca de terceros.
Los pasos específicos son (tome la segunda representación como ejemplo):
- Introducido en build.gradle (compilación hace referencia a la versión inferior de AS, pero la versión superior abandona la compilación y usa la implementación)
implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1'
- y luego definir el objeto
private SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
private TimePickerDialog pickerdialog;
- Acerca de los controles xml
overTime = (TextView) findViewById(R.id.tv_overTime);
- Luego llámalo en la función onCreate
overTime.setOnClickListener( new OnPickOverYearClickListener(this,overTime));
- Luego implemente OnPickOverYearClickListener(this,overTime) fuera de la función onCreat:
public class OnPickOverYearClickListener implements View.OnClickListener, OnDateSetListener {
public OnPickOverYearClickListener(AddActivity addActivity, TextView overTime) {
}
@Override
public void onClick(View view) {
pickerdialog = new TimePickerDialog.Builder().setType(Type.ALL).setCallBack(this).
setTitleStringId("请选择时间").setCurrentMillseconds(System.currentTimeMillis())
.setThemeColor(getResources().getColor(R.color.green))
.setWheelItemTextSize(15).build();
pickerdialog.show(getSupportFragmentManager(),"abc");
}
@Override
public void onDateSet(TimePickerDialog timePickerView, long millseconds) {
//显示overTime
overTime.setText(getDateToString(millseconds));
// Toast.makeText(this, "你选择的时间:"+getDateToString(millseconds), Toast.LENGTH_SHORT).show();
//将选择的时间(此时是秒的形式)转换成TimeStamp存进数据库
signOverTime = getDateToTimeStamp(millseconds);
}
public String getDateToString(long time){
Date d = new Date(time);
return sf.format(d);
}
public Timestamp getDateToTimeStamp(long time){
Timestamp timestamp = new Timestamp(time);
System.out.println("d----"+timestamp);
return timestamp;
}
}
Nota: Puede reemplazar Type.ALL en initTimeDialog(Type.ALL) con otros tipos, como solo año-mes, año-mes-día, tiempo dividido, etc., por lo que si necesita realizar la primera representación, configure Escriba Simplemente reemplace .ALL con Type.YEAR.
Archivo adjunto: si necesita implementar dos DateTimePickers en la misma actividad, simplemente cambie el nombre de la función de OnPickOverYearClickListener(this,overTime) e impleméntelo. Si solo necesita el año y cambia el año a int y lo almacena en la base de datos, solo necesita convertir la hora actual (es decir, hora actual, cuántos segundos quedan en este momento) a Fecha a través de la función goToString (en esta vez, en realidad son las 0:00 del 1 de enero, formato xx) y luego conviértalo a String, luego use String.subString(0,4) para obtener los primeros cuatro dígitos (es decir, el año) y luego conviértalo al tipo int
.