Календарь timeinmillis возвращает неправильное значение - PullRequest
0 голосов
/ 19 апреля 2019

С помощью DatePicker я выбираю дату, и мне нужна дата и временная метка из выбранной даты:

        Calendar calendar = Calendar.getInstance(Locale.GERMANY);



        final DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() {
        @Override
        public void onDateSet(DatePicker datePicker, int year, int monthOfYear, int dayOfMonth) {
            calendar.set(Calendar.YEAR,year);
            calendar.set(Calendar.MONTH,monthOfYear);
            calendar.set(Calendar.DAY_OF_MONTH,dayOfMonth);
            SimpleDateFormat sdf = new SimpleDateFormat("EEEE");

            Ctag = sdf.format(calendar.getTime()).substring(0,3)+".";
            CdTag = String.format("%02d",dayOfMonth);
            Cmonat = String.format("%02d",monthOfYear+1);
            Cjahr  = Integer.toString(year);
            Cdatum = CdTag+"."+Cmonat+"."+Cjahr;
            Ctimestamp = (int) (long) calendar.getTimeInMillis();

            getDatum.setText(Ctag+","+CdTag+"."+Cmonat+"."+Cjahr);

            Snackbar snackbar = Snackbar.make(cl_main,String.valueOf(Long.valueOf(calendar.getTimeInMillis()).intValue()),3000).setDuration(Snackbar.LENGTH_INDEFINITE);
            snackbar.show();


        }
    };

Поэтому я устанавливаю выбранную дату, а calendar.getTimeInMillis() я хочу указать временную метку изДата.

Но, например, сегодня я выбираю 18.04.2019, он возвращает 843974600, и когда я конвертирую его на веб-сайте конвертации UNIX, он дает мне следующую дату:

GMT: Sunday, 29. September 1996 05:23:20
Your time zone: Sonntag, 29. September 1996 07:23:20 GMT+02:00 DST
Relative: 23 years ago

1 Ответ

0 голосов
/ 19 апреля 2019

Вы можете попробовать с этим кодом, он должен работать:

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

 Long timeinmilli = calendar.getTimeInMillis(); //will give tou time in ms

 SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); //format of the date, choose what you want 

 Date resultdate = new Date(timeinmilli); //create an object date associated to the time in ms

 String date = DateFormat.format(resultdate).toString(); //convert the date into a string with the format you choose
...