Swift 3
Это сработало для меня:
self.isUserInteractionEnabled = true
Использование Java 1.6 java.util.Calendar.add :
public static Date subtractDay(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DAY_OF_MONTH, -1);
return cal.getTime();
}
Другие предлагают использовать Joda Time , который в настоящее время является JSR 310 , а позже должен быть включен в саму Java.
Важно помнить, что класс Date должен представлять любые моменты времени, в то время как класс Calendar используется для управления этими моментами времени. Наконец, SimpleDateFormat представит их как строки.
Итак, лучший способ - использовать класс Calendar для вычисления новой даты за вас. Это обеспечит учет любых капризов (переход на летнее время, високосные годы и т.п.).
Я предполагаю, что вы действительно не хотите находить «24 часа назад», но на самом деле хотите, чтобы новый экземпляр Date представлял «на этот раз вчера» - в любом случае вы можете запросить у экземпляра календаря дату за 24 часа до другого или на 1 день раньше.
Летнее время - отличный пример. Великобритания «рванулась вперед» 26 марта 2009 г. Итак, за 1 день до 3:00 26 марта.
вычтите 1000 * 60 * 60 * 24 из времени и создайте новую дату.
Date yesterday = new Date(d.getTime() - (1000*60*60*24));
int dayInMs = 1000 * 60 * 60 * 24;
Date previousDay = new Date(olddate.getTime() - dayInMs);
Лично, если есть много вычислений времени / даты, я бы пошел с Йода-тайм .