【问题标题】:How to send date selected in DatePickerDialog to Firebase?如何将 DatePickerDialog 中选择的日期发送到 Firebase?
【发布时间】:2021-01-20 08:23:37
【问题描述】:

我使用 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(); ,但没有成功。

【问题讨论】:

    标签: firebase firebase-realtime-database datepicker datepickerdialog


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 感谢您的回复!。如果我想在将来检索时间,这对我很有用。我决定将我的 TextView 更改为 EditText,并且能够将其作为字符串发送。
    猜你喜欢
    • 2015-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-29
    • 2016-01-08
    相关资源
    最近更新 更多