【问题标题】:Android store valid dates (not dates in past)Android 商店有效日期(不是过去的日期)
【发布时间】:2014-02-28 22:04:15
【问题描述】:

不知道为什么,但我试图设置一个有效的(不是过去的)。这在某些情况下有效,例如设置为 2014 年 4 月 4 日,但是如果我将其设置为 2014 年 2 月 28 日至 2014 年 3 月 2 日,则表示该日期是过去的日期。有人能看出为什么会这样吗?

public class StartDatePicker extends DialogFragment implements
            DatePickerDialog.OnDateSetListener {

    Calendar c = Calendar.getInstance();
    int startYear = c.get(Calendar.YEAR);
    int startMonth = c.get(Calendar.MONTH);
    int startDay = c.get(Calendar.DAY_OF_MONTH);

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        // Use the current date as the default date in the date picker
        DatePickerDialog dialog = new DatePickerDialog(getActivity(), this,
                startYear, startMonth, startDay);
        return dialog;
    }

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




        // disable past dates

        if (year < startYear || monthOfYear < startMonth
                || dayOfMonth < startDay) {
            DialogFragment dialogFragment = new StartDatePicker();
            dialogFragment.show(getSupportFragmentManager(),
                    "start_date_picker");
            Toast.makeText(getApplicationContext(), "Select Valid Date",
                    Toast.LENGTH_LONG).show();
        } else {

//store date

}}

【问题讨论】:

  • 忘了说,我用的是日期选择器

标签: java android date datepicker


【解决方案1】:

如果您想检查所选日期是否已过去,请使用以下命令:

在您的 onDateSet 函数上 - 创建一个日历实例并:

calendar.set(Calendar.YEAR,year);
calendar.set(Calendar.MONTH,monthOfYear);
calendar.set(Calendar.DAY_OF_MONTH,dayOfMonth);

在选择日期设置日历后,使用 System.timeInMilliseconds() 检查它是否在您当前时间之后/之后

if (calendar.getTimeInMilliseconds() < System.timeInMilliseconds()) {
  // Your implementation ... 
}

希望对你有帮助……祝你好运

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-01
    • 2022-01-23
    • 2018-09-19
    • 1970-01-01
    • 2016-04-08
    • 2020-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多