Мне нужно написать высокопроизводительную функцию, которая вычисляет новое время и дату на основе заданного времени и даты. Он принимает 2 аргумента:
- Строка, представляющая дату в формате ГГГГММДДЧЧмм
- Целое число, представляющее временной сдвиг в часах
Функция возвращает строку в формате 1-го аргумента, которая составляется в результате применения временного сдвига к 1-му аргументу
Заранее известно, что первый аргумент всегда остается неизменным в течение времени жизни программы.
Моя реализация имеет следующие шаги:
- парсинг 1-го аргумента для извлечения года, месяца, даты, часов, мин.
- создание объекта GregorianCalendar (год, месяц, дата, часы, мин)
- применение метода GregorianCalendar.add (HOUR, timeshift)
- применение SimpleDateFormat для преобразования результата обратно в строку
Проблема в том, что я не пользуюсь тем фактом, что 1-й аргумент всегда один и тот же.
Если я создам члена класса GregorianCalendar (год, месяц, дата, часы, мин), то после 1-го вызова моей функции этот объект будет изменен, что не очень хорошо, потому что я не могу использовать его для следующих вызовов.