如何将 DatePickerDialog 中选择的日期发送到 Firebase?

问题描述

我使用 DatePickerDialog 通过单击 TextView 从用户获取所选日期。但问题是我如何将该值(日期)从 TextView 发送到 Firebase?日期可以转成字符串吗?

TextView startDate;
DatePickerDialog.OnDateSetListener startDateDateSetListener;


startDate.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Calendar cal = Calendar.getInstance();
            cal.add(Calendar.DATE,-1);

            int year = cal.get(Calendar.YEAR);
            int month = cal.get(Calendar.MONTH);
            int day = cal.get(Calendar.DAY_OF_MONTH);

            DatePickerDialog dialog = new DatePickerDialog(leaveForm.this,android.R.style.Theme_Holo_Light_Dialog_MinWidth,startDateDateSetListener,year,month,day);
            dialog.getwindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

            dialog.getDatePicker().setMinDate(cal.getTimeInMillis());
            
            dialog.getDatePicker().setMinDate(System.currentTimeMillis() - 1000);
            dialog.show();
        }
    });

    startDateDateSetListener = new DatePickerDialog.OnDateSetListener() {
        @Override
        public void onDateSet(DatePicker datePicker,int year,int month,int day) {
            month = month + 1;
            Log.d(TAG,"onDateSet: dd/mm/yyy: " + day + "/" + month + "/" + year);

            String date = day + "/" + month + "/" + year;
            startDate.setText(date);
        }
    };

private void applyLeave() {
    String leave_type = leaveType.getSelectedItem().toString(); //Spinner
    
    String start_date = startDate.getText().toString();

    leavedetails = new leaveDetails(leave_type,start_date);

    progressBar.setVisibility(View.VISIBLE);
    reference.child(userID).child("leaveRequest").push().setValue(leavedetails).addOnCompleteListener(new OnCompleteListener<Void>() {
        @Override
        public void onComplete(@NonNull Task<Void> task) {
            if (task.isSuccessful()) {
                Toast.makeText(leaveForm.this,"Leave Request Sent!",Toast.LENGTH_LONG).show();
                progressBar.setVisibility(View.GONE);
            } else {
                Toast.makeText(leaveForm.this,"Leave Request Failed!",Toast.LENGTH_LONG).show();
                progressBar.setVisibility(View.GONE);
            }
        }
    });
}

我尝试使用 String start_date = startDate.getText().toString(); ,但没有成功。

解决方法

我建议将其存储为时间戳,然后在需要时将其转换回日期和时间。

此示例为您提供日期和时间,但如果您想获得该日期的午夜,则只需将最后三个参数保留为“0”。

Calendar calendar = Calendar.getInstance();
calendar.set(picker.getYear(),picker.getMonth(),picker.getDayOfMonth(),picker.getHours(),picker.getMinutes(),picker.getSeconds());
date = Long.toString(calendar.getTimeInMillis());

这也将确保您可以轻松地将其转换为您将来可能需要的任何时区。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...