【问题标题】:How to count number of days between date range material picker in android如何计算android中日期范围材料选择器之间的天数
【发布时间】:2020-10-25 13:46:23
【问题描述】:

如何计算日期范围选择器之间的天数

我正在尝试,但没有解决方案,请任何人帮助我

我急需计算天数 当用户从日期选择器范围中选择日期范围时 然后设置文本总天数。

    try {

        String valu1 = String.valueOf(constraintsBuilder.setStart(calendar.getTimeInMillis()));
        String valu2 = String.valueOf(constraintsBuilder.setEnd(calendar.getTimeInMillis()));
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MMM-yyyy");
        Date date1 = simpleDateFormat.parse(valu1);
        Date date2 = simpleDateFormat.parse(valu2);
        long difference = Math.abs(date1.getTime() - date2.getTime());

        Log.i("Testing","days" +difference);
        textView.setText("days" +difference);

    }
    catch(Exception ex)
    {

        ex.printStackTrace();
    }

主要代码是

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

    showDatePicker= findViewById(R.id.showDatepicker);
    textView=findViewById(R.id.textView);

    Calendar calendar =Calendar.getInstance(TimeZone.getTimeZone("UTC+06"));
 calendar.clear();

    MaterialDatePicker.Builder builder = MaterialDatePicker.Builder.dateRangePicker();
    builder.setTitleText("Select Date");
  


    final MaterialDatePicker materialDatePicker = builder.build();

    showDatePicker.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            materialDatePicker.show(getSupportFragmentManager(),"DATE_PICKER");

        }
    });


    materialDatePicker.addOnPositiveButtonClickListener(new MaterialPickerOnPositiveButtonClickListener() {
        @Override
        public void onPositiveButtonClick(Object selection) {

            showDatePicker.setText(materialDatePicker.getHeaderText());


        }
    });
}

【问题讨论】:

  • 顺便考虑扔掉长期过时且臭名昭著的麻烦SimpleDateFormat和朋友,并将ThreeTenABP添加到您的Android项目中,以便使用java.time,现代Java日期和时间API .与它一起工作要好得多。开箱即用地计算天数。

标签: android material-design android-datepicker material-components-android


【解决方案1】:

你可以使用类似的东西:

    MaterialDatePicker<Pair<Long, Long>> picker = builder.build();
    picker.show(getSupportFragmentManager(), picker.toString());

    picker.addOnPositiveButtonClickListener(new MaterialPickerOnPositiveButtonClickListener<Pair<Long, Long>>() {
        @Override public void onPositiveButtonClick(Pair<Long,Long> selection) {
            Long startDate = selection.first;
            Long endDate = selection.second;

            long msDiff = endDate - startDate;
            long daysDiff = TimeUnit.MILLISECONDS.toDays(msDiff);
            

        }
    });

【讨论】:

  • 请注意TimeUnit.MILLISECONDS.toDays(msDiff) 不知道实际日期、时区、夏令时等。因此,它可能会出现一些意外故障。
  • @Michiel true,但在这种情况下它不应该相关,因为选择器中的 2 个选定日期应该具有相同的条件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-09
  • 1970-01-01
  • 2018-04-20
  • 2018-02-19
  • 1970-01-01
相关资源
最近更新 更多