【问题标题】:Setting up a start date and a end date to store into a firebase cloud?设置开始日期和结束日期以存储到 Firebase 云中?
【发布时间】:2021-04-02 04:44:29
【问题描述】:

目前,我正在创建一个日历应用程序,该应用程序本质上是让员工选择开始日期和结束日期。在这些日期之间选择的持续时间将是员工选择的假期。

现在的问题是我需要将 2 个日期(开始日期和结束日期)存储到 firebase 数据库中。我打算稍后使用此信息,以便我可以将日期与可能在同一周休假的其他员工进行比较(因此需要验证)。但是,使用我当前的代码,我只能创建开始日期而不能创建结束日期,我也无法将信息存储到云中,但我很难理解如何以当前形式检索数据。

为了进一步澄清,我想要实现的是:我将有 2 个按钮,startDateBtnendDateBtn,两者都将初始化日历,选择的日期将作为字符串存储/返回,并且将检索数据通过名为bookDatesBtn 的第三个按钮。此按钮会将数据保存到云端。

我尝试过的:

  • 使用了一个布尔变量设置为假,如果startDateBtn被初始化,布尔变量设置为真,这将触发一个if-else语句并将开始日期的信息设置为一个字符串。如果 endDateBtn 已初始化,则布尔变量将设置为 false,这会将结束日期的信息保存为字符串。

DatePickerFragment.Java

import android.app.DatePickerDialog;
import android.app.Dialog;
import android.os.Bundle;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.DialogFragment;

import java.util.Calendar;

public class DatePickerFragment extends DialogFragment{

    @NonNull
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {

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

        return new DatePickerDialog(getActivity(), (DatePickerDialog.OnDateSetListener) getActivity(), year, month, day);

    }
    
}

HolidayScreen.Java

import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.DialogFragment;

import android.app.DatePickerDialog;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;

import java.text.DateFormat;
import java.util.Calendar;

public class HolidayScreen extends AppCompatActivity implements DatePickerDialog.OnDateSetListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_holiday_screen);

//        //Setting listener for start date button for picking date
        Button startButton = (Button) findViewById(R.id.startDateButton);
        startButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                DialogFragment datePicker = new DatePickerFragment();
                datePicker.show(getSupportFragmentManager(), "start date picker");

            }
        });

        //Setting listener for start date button for picking date
        Button endButton = (Button) findViewById(R.id.endDateButton);
        endButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                DialogFragment datePicker = new DatePickerFragment();
                datePicker.show(getSupportFragmentManager(), "end date picker");
            }
        });

        //Setting listener for storing both dates into the cloud
        Button bookButton = (Button) findViewById(R.id.bookButton);
        bookButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //This is where all the logic will go, so i will retrieve the start date information and then the-
                //-end date information and store into firebase database
            }
        });

    }


    @Override
    public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {

        Calendar c = Calendar.getInstance();
        c.set(Calendar.YEAR, year);
        c.set(Calendar.MONTH, month);
        c.set(Calendar.DAY_OF_MONTH, dayOfMonth);
        String currentDateString = DateFormat.getDateInstance(DateFormat.FULL).format(c.getTime());


            TextView startTextView = (TextView) findViewById(R.id.startDateText);
            startTextView.setText("Start Date: " + currentDateString);
    }

}

XML 文件将根据要求提供。

【问题讨论】:

    标签: java android firebase calendar


    【解决方案1】:

    这是我的个人使用代码,它适用于我的所有设备我认为您应该尝试此代码...

    我想知道您必须使用哪个 firebase 数据库,以便在我提出建议之后...... firebase real-time OR Cloud-firestore 用于存储数据......

    完整代码请访问我的代码链接 - https://github.com/axarlotwala/CafeDelear/blob/master/app/src/main/java/com/cafedelear/aksha/cafedelear/Fragment/ProductOfferFragment.java

    /*method of start offer*/
    
    private void offerStart() {
    
        final Calendar calendar = Calendar.getInstance();
        myear = calendar.get(Calendar.YEAR);
        dmonth = calendar.get(Calendar.MONTH);
        mdate = calendar.get(Calendar.DAY_OF_MONTH);
    
        dialog = new DatePickerDialog(getActivity(), new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
    
                start_date.setText(year + "-" + (month+1) + "-" + dayOfMonth);
            }
        },myear,dmonth,mdate);
        dialog.show();
    
        dialog.getDatePicker().setMinDate(calendar.getTimeInMillis());
    }
    
    private void offerEnd(){
    
        final Calendar calendar = Calendar.getInstance();
        myear = calendar.get(Calendar.YEAR);
        dmonth = calendar.get(Calendar.MONTH);
        mdate = calendar.get(Calendar.DAY_OF_MONTH);
        calendar.roll(Calendar.DATE,1);
    
    
        dialog = new DatePickerDialog(getActivity(), new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
    
                end_date.setText(year + "-" + (month+1) + "-" + dayOfMonth);
            }
        },myear,dmonth,mdate);
        dialog.show();
    
        dialog.getDatePicker().setMinDate(calendar.getTimeInMillis());
    
        //if offer end date is selected is also start Offer date then offer end time is Date-23-59-59
    }
    

    【讨论】:

      【解决方案2】:

      这是你可以在你的 textview 中了解上一个或新的日期,然后使用它

      上一个日期:

           public void previousDate(Context context, TextView textView) {
          mCalendarAlarm = Calendar.getInstance();
          mCalendarAlarm.setTimeZone(TimeZone.getDefault());
          DatePickerDialog datePickerDialog =
                  new DatePickerDialog(context, (view, year, monthOfYear, dayOfMonth) -> {
                      mCalendarAlarm.set(Calendar.YEAR, year);
                      mCalendarAlarm.set(Calendar.MONTH, monthOfYear);
                      mCalendarAlarm.set(Calendar.DAY_OF_MONTH, dayOfMonth);
                      SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
                      String datetime = dateFormat.format(mCalendarAlarm.getTime());
                      textView.setText(datetime);
                  }, mCalendarAlarm.get(Calendar.YEAR), mCalendarAlarm.get(Calendar.MONTH),
                          mCalendarAlarm.get(Calendar.DAY_OF_MONTH));
          datePickerDialog.getDatePicker().
                  setMaxDate(mCalendarAlarm.getTimeInMillis());
          datePickerDialog.show();
      }
      

      下一个日期:

      public void NextDate(Context context, TextView textView) {
          mCalendarAlarm = Calendar.getInstance();
          mCalendarAlarm.setTimeZone(TimeZone.getDefault());
          DatePickerDialog datePickerDialog =
                  new DatePickerDialog(context, (view, year, monthOfYear, dayOfMonth) -> {
                      mCalendarAlarm.set(Calendar.YEAR, year);
                      mCalendarAlarm.set(Calendar.MONTH, monthOfYear);
                      mCalendarAlarm.set(Calendar.DAY_OF_MONTH, dayOfMonth);
                      SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
                      String datetime = dateFormat.format(mCalendarAlarm.getTime());
                      textView.setText(datetime);
                  }, mCalendarAlarm.get(Calendar.YEAR), mCalendarAlarm.get(Calendar.MONTH),
                          mCalendarAlarm.get(Calendar.DAY_OF_MONTH));
          datePickerDialog.getDatePicker().
                  setMinDate(mCalendarAlarm.getTimeInMillis());
          datePickerDialog.show();
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-19
        • 2022-11-16
        • 2015-02-27
        • 2016-02-13
        • 1970-01-01
        相关资源
        最近更新 更多