Я получаю это время
String myTime = "14:10";
Теперь я хочу добавить как 10 минут до этого времени, так что это будет 14:20
Возможно ли это, и если да, то как?
Спасибо
Я получаю это время
String myTime = "14:10";
Теперь я хочу добавить как 10 минут до этого времени, так что это будет 14:20
Возможно ли это, и если да, то как?
Спасибо
Что-то вроде этого
String myTime = "14:10";
SimpleDateFormat df = new SimpleDateFormat("HH:mm");
Date d = df.parse(myTime);
Calendar cal = Calendar.getInstance();
cal.setTime(d);
cal.add(Calendar.MINUTE, 10);
String newTime = df.format(cal.getTime());
В качестве справедливого предупреждения могут возникнуть проблемы, если в этот 10-минутный период будет задействовано летнее время.
Я бы использовал Joda Time, проанализировал время как LocalTime
, а затем использовал
time = time.plusMinutes(10);
Краткая, но полная программа, чтобы продемонстрировать это:
import org.joda.time.*;
import org.joda.time.format.*;
public class Test {
public static void main(String[] args) {
DateTimeFormatter formatter = DateTimeFormat.forPattern("HH:mm");
LocalTime time = formatter.parseLocalTime("14:10");
time = time.plusMinutes(10);
System.out.println(formatter.print(time));
}
}
Обратите внимание, что я определенно буду использовать Joda Time вместо java.util.Date/Calendar, если возможно, - это гораздо более удобный API.
Использовать метод Calendar.add(int field,int amount)
.
Вам нужно преобразовать его в Date, где вы можете добавить несколько секунд и преобразовать его в строку.
Java 7 Time API
DateTimeFormatter df = DateTimeFormatter.ofPattern("HH:mm");
LocalTime lt = LocalTime.parse("14:10");
System.out.println(df.format(lt.plusMinutes(10)));
Я бы рекомендовал хранить время как целые числа и регулировать его через операторы деления и по модулю, как только это будет сделано, преобразуйте целые числа в требуемый строковый формат.
В приведенных выше ответах есть много простых подходов. Это еще одна идея. Вы можете преобразовать его в миллисекунду и добавить TimeZoneOffset и добавить/вычесть минуты/часы/дни и т.д. За миллисекунды.
String myTime = "14:10";
int minsToAdd = 10;
Date date = new Date();
date.setTime((((Integer.parseInt(myTime.split(":")[0]))*60 + (Integer.parseInt(myTime.split(":")[1])))+ date1.getTimezoneOffset())*60000);
System.out.println(date.getHours() + ":"+date.getMinutes());
date.setTime(date.getTime()+ minsToAdd *60000);
System.out.println(date.getHours() + ":"+date.getMinutes());
Выход:
14:10
14:20
Я использовал код ниже, чтобы добавить определенный временной интервал к текущему времени.
int interval = 30;
SimpleDateFormat df = new SimpleDateFormat("HH:mm");
Calendar time = Calendar.getInstance();
Log.i("Time ", String.valueOf(df.format(time.getTime())));
time.add(Calendar.MINUTE, interval);
Log.i("New Time ", String.valueOf(df.format(time.getTime())));