Даты не печатаются как формат даты в android - PullRequest
0 голосов
/ 12 июля 2020

что мне делать, если я хочу напечатать эти даты? Поскольку использование System.out.println (startDate); System.out.println (дата окончания); дает мне этот результат: 1595203200000 1596153600000, и я хочу, чтобы дата в качестве вывода

publi c class MainActivity extends AppCompatActivity {

private Button bt1;
private TextView tv1;
private Long startDate;
private Long endDate;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    
    bt1 = findViewById(R.id.bt1);
    tv1 = findViewById(R.id.tv1);

    MaterialDatePicker.Builder<Pair<Long, Long>> builder = MaterialDatePicker.Builder.dateRangePicker();
    final MaterialDatePicker<Pair<Long,Long>> materialDatePicker = builder.build();

    bt1.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) {
           tv1.setText(materialDatePicker.getHeaderText());
        }
    });*/
    materialDatePicker.addOnPositiveButtonClickListener(new MaterialPickerOnPositiveButtonClickListener<Pair<Long, Long>>() {
        @RequiresApi(api = Build.VERSION_CODES.N)
        @Override
        public void onPositiveButtonClick(Pair<Long, Long> selection) {
           tv1.setText(materialDatePicker.getHeaderText());
            startDate = selection.first;
            endDate = selection.second;
            System.out.println("this is start date: " + startDate);
            System.out.println("this is end date " + endDate);

        }
    });

}

}

текущий результат: I /System.out: это дата начала: 1594598400000, это дата окончания 1596672000000

1 Ответ

1 голос
/ 12 июля 2020

Вам просто нужно использовать класс DateFormatter. Есть форматы по умолчанию. Вы просто создаете его экземпляр, затем вызываете на нем format, передавая Date.

Вот документация: DateFormatter .

Даты в Android указаны особенное сопротивление, потому что между Oracle и Google разразилась война за условия лицензирования Java. Итак, Java не обновлялся какое-то время, включая Java 8, который включал полное изменение даты и времени. Теперь вы можете использовать Java 8 дат / времени в Android, но если вы потеряете совместимость со старыми ОС.

Вот ваш код с добавленным форматером:

   public void onPositiveButtonClick(Pair<Long, Long> selection) {
       tv1.setText(materialDatePicker.getHeaderText());
        startDate = selection.first;
        endDate = selection.second;
        DateFormatter formatter = SimpleDateFormatter("dd-MM-yyyy", Locale.US);
        System.out.println("this is start date: " + formatter.format(startDate));
        System.out.println("this is end date " + formatter.format(endDate)));

    }

Конечно, вы можете использовать локаль по умолчанию.

...