В моем приложении Android я получаю дату и время в следующем формате через HTTP-запрос.
Вт апр 17 16:23:33 IST 2012
Теперь я хочу рассчитать разницу во времени между этим временем и текущим временем. У меня есть много способов рассчитать разницу во времени в Интернете, но все эти решения имеют разные форматы. Как я могу рассчитать разницу во времени с форматом выше времени?
Редактировать: Это код, который я использовал для его работы.
DateFormat df = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy"); Date dateOne = df.parse("Tue apr 22 13:07:32 IST 2012"); Date dateTwo = df.parse("Tue Apr 22 13:07:33 IST 2012"); long timeDiff = Math.abs(dateOne.getTime() - dateTwo.getTime()); System.out.println("difference:" + timeDiff); //differencs in ms
Но я должен принять текущее время в формате «Tue apr 22 13:07:32 IST 2012» для использования в качестве dateTwo.
Вы также можете использовать этот код :::
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z"); Date dateOne = df.parse("2011-02-08 10:00:00 +0300"); Date dateTwo = df.parse("2011-02-08 08:00:00 +0100"); long timeDiff = Math.abs(dateOne.getTime() - dateTwo.getTime()); System.out.println("difference:" + timeDiff); // difference: 0
Создайте объект SimpleDateFormat(String pattern)
используя шаблон, описывающий вашу дату, указанную выше.
Затем используйте parse(String)
и введите в него дату даты. Он должен вернуть вам объект Date
. Затем вы можете использовать Date.getDateInstance().getTime()
чтобы получить текущее время.
Получение разницы во времени – это вопрос вычитания времени сервера из текущего времени.
Попробуйте этот код
Date pdate = /* your date comming from HTTP */ Date cdate = new Date(System.currentTimeMillis()); long difference = cdate.getTime() - pdate.getTime();
Вы можете сделать это, используя приведенный ниже код.
String format = "Tue Apr 17 16:23:33 IST 2012"; int month = 0; Calendar yourDate = Calendar.getInstance(); String[] months = new String[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; String datArr[] = format.split(" "); String[] time = datArr[3].split(":"); for (int i = 0; i < months.length; i++) { if (months[i] == datArr[1]) { month = i; } } yourDate.set(Integer.parseInt(datArr[5]), month, Integer.parseInt(datArr[2]), Integer.parseInt(time[0]), Integer.parseInt(time[1])); Log.i("Your Date= ", yourDate.toString()); Log.i("Now Date= ",Calendar.getInstance().toString());
Используя это, вы можете получить разницу во времени между этими двумя датами.
Вы можете рассчитать разницу во времени в милисекундах, используя этот метод, и получить выходы в секундах, минутах, часах, днях, месяцах и годах.
Вы можете скачать класс отсюда: DateTimeDifference GitHub Link
Long currentTime = System.currentTimeMillis (); Long previousTime = (System.currentTimeMillis () - 864000000); // 10 дней назад Log.d («DateTime:», «Difference With Second:» + AppUtility.DateTimeDifference (currentTime, previousTime, AppUtility.TimeDifference.SECOND)); Log.d («DateTime:», «Difference With Minute:» + AppUtility.DateTimeDifference (currentTime, previousTime, AppUtility.TimeDifference.MINUTE));
If (AppUtility.DateTimeDifference (currentTime, previousTime, AppUtility.TimeDifference.MINUTE)> 100) { Log.d («DateTime:», «Разница между двумя датами отличается более чем на 100 минут»); } Еще { Log.d («DateTime:», «Разница между двумя датами не более 100 минут»); }