【问题标题】:Datepicker and Calendar example for calculating Day diffrence and shows output accordingly用于计算日差并相应显示输出的 Datepicker 和 Calendar 示例
【发布时间】:2016-10-29 23:11:58
【问题描述】:

以下是我的代码。根据我的应用程序,我可以通过单击相应的按钮输入 From DAte 和 ToDAte。但是从日期选择器对话框中选择日期后,我必须找到天之间的差异。然后计算总成本。但是我的代码有问题,因为我的 FromDate 和 ToDate 采用相同的日期,因此仅将总成本显示为零。我是安卓新手。请帮我解决这个问题。

public class MainActivity extends AppCompatActivity {

TextView tv_rentcarheading, tv_costresult;
Button btndateFrom, btndateTo, btncalculate;
int CurrentYear1, CurrentMonth1, CurrentDay1, CurrentYear2, CurrentMonth2, CurrentDay2;
final int rent = 150;
static final int dialog_id1 = 0, dialog_id2 = 0;
long n, totalcost;


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

    tv_rentcarheading = (TextView) findViewById(R.id.tv_rentcar);
    tv_costresult = (TextView) findViewById(R.id.tv_result);
    btndateFrom = (Button) findViewById(R.id.btn_fromdate);
    btndateTo = (Button) findViewById(R.id.btn_todate);
    btncalculate = (Button) findViewById(R.id.btn_result);

    tv_costresult.setVisibility(View.INVISIBLE);

    Calendar calendar1 = Calendar.getInstance();

    CurrentYear1 = calendar1.get(Calendar.YEAR);
    CurrentMonth1 = calendar1.get(Calendar.MONTH);
    CurrentDay1 = calendar1.get(Calendar.DAY_OF_MONTH);

    Calendar calendar2 = Calendar.getInstance();
    CurrentYear2 = calendar2.get(Calendar.YEAR);
    CurrentMonth2 = calendar2.get(Calendar.MONTH);
    CurrentDay2 = calendar2.get(Calendar.DAY_OF_MONTH);


    showDialogOnButtonClick();

    calendar1.set(CurrentYear1, CurrentMonth1, CurrentDay1);
    calendar2.set(CurrentYear2, CurrentMonth2, CurrentDay2);

    n = (calendar2.getTimeInMillis() - calendar1.getTimeInMillis() );
    totalcost = n * rent;

    btncalculate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            totalcost = n * rent;
            tv_costresult.setText("The Cost of car from " +CurrentMonth1+"/"+CurrentDay1+"/"+CurrentYear1+" to "+CurrentMonth1+"/"+CurrentDay1+"/"+CurrentYear1+" is "+totalcost);
            tv_costresult.setVisibility(View.VISIBLE);
        }
    });
}


public void showDialogOnButtonClick()
{
    btndateFrom.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            showDialog(dialog_id1);
        }
    });

    btndateTo.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            showDialog(dialog_id2);
        }
    });
}


@Override
protected Dialog onCreateDialog(int id)
{
    if(id == dialog_id1)
        return new DatePickerDialog(MainActivity.this, setDateListener1, CurrentYear1, CurrentMonth1, CurrentDay1);


    if(id == dialog_id2)
        return new DatePickerDialog(MainActivity.this, setDateListener2, CurrentYear2, CurrentMonth2, CurrentDay2);


    else
        return null;
}


private DatePickerDialog.OnDateSetListener setDateListener1 = new DatePickerDialog.OnDateSetListener()
{
    @Override
    public void onDateSet(DatePicker view, int year, int month, int dayOfMonth)
    {
        CurrentYear1 = year;
        CurrentMonth1 = month + 1;
        CurrentDay1 = dayOfMonth;
        Toast.makeText(MainActivity.this, "From Date is " + CurrentMonth1 +"/" + CurrentDay1+ "/" + CurrentYear1, Toast.LENGTH_LONG ).show();
    }
};


private DatePickerDialog.OnDateSetListener setDateListener2 = new DatePickerDialog.OnDateSetListener()
{
    @Override
    public void onDateSet(DatePicker view, int year, int month, int dayOfMonth)
    {
        CurrentYear2 = year;
        CurrentMonth2 = month +1;
        CurrentDay2 = dayOfMonth;
        Toast.makeText(MainActivity.this, "From Date is " + CurrentMonth2 +"/" + CurrentDay2+ "/" + CurrentYear2, Toast.LENGTH_LONG ).show();
    }
};

}

【问题讨论】:

    标签: android datepicker calendar


    【解决方案1】:

    结果显示为零,因为您在btncalculate onclicklistener 之外设置了calendar1calendar2。 Mover,你需要先递减CurrentMonth1CurrentMonth2,然后再设置为日历。

    将这部分代码从onCreate移动到btncalculate.setOnClickListener(...)内部

    CurrentMonth1 = CurrentMonth1 - 1;
    CurrentMonth2 = CurrentMonth2 - 1;
    calendar1.set(CurrentYear1, CurrentMonth1, CurrentDay1);
    calendar2.set(CurrentYear2, CurrentMonth2, CurrentDay2);
    
    n = (calendar2.getTimeInMillis() - calendar1.getTimeInMillis() );
    n = n / ( 1000 * 60 * 60 * 24 );
    totalcost = n * rent;
    

    【讨论】:

    • @RamMalhotra 我的回答对您有帮助吗?你试过了吗?
    猜你喜欢
    • 1970-01-01
    • 2013-01-17
    • 1970-01-01
    • 1970-01-01
    • 2019-05-14
    • 2019-03-01
    • 2012-12-11
    • 2023-03-27
    • 2021-06-25
    相关资源
    最近更新 更多