#android #unix-timestamp
#Android #unix-временная метка
Вопрос:
С помощью выбора даты я выбираю дату, и мне нужны дата и временная метка с выбранной даты:
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("d",dayOfMonth);
Cmonat = String.format("d",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. Время в миллисекундах равно
long
. Если вы хотите получить его в секундах, разделите на 1000, вместо того, чтобы приводить его кint
.2. @MikeM. да, деление на 1000 решило мою проблему. Спасибо
Ответ №1:
Вы можете попробовать с этим кодом, он должен работать :
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