firebase - 如何将 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());
这也将确保您可以轻松地将其转换为您将来可能需要的任何时区。
推荐阅读
- snmp - 使用 python 将 SNMP OID 转换为文本
- android - 如何在 Flutter 中创建像这样的自定义可滑动标签栏?
- css - 定位输入不生效
- laravel-8 - 如何将 Bootstrap 5 RTL 导入 Laravel 8?
- coldfusion - 在 Coldfusion 的 SQL 查询中使用动态下拉列表中的值
- c++ - 格式':不是'CStatic'计时器的成员
- routes - 如何加载保存在codeigniter4模块文件夹中的js文件
- android - 如何用颤振打开android默认时钟
- python - Python aiosmtpd 提供服务器不支持的 SMTP AUTH 扩展
- reactjs - Http.post 不是函数