Подтвердить что ты не робот

Дата постройки - эффективный способ

Могу ли я узнать, что является наиболее эффективным способом создания объекта даты с использованием определенного дня, месяца и года.

Date(int year, int month, int day) 

Эта конструкция обесценивается. Следовательно, я обычно делаю:

Calendar calendar = Calendar.getInstance();
Date date = calendar.set(year, month, date).getTime();

Однако я понимаю, что Calendar.getInstance() довольно дорогой. Каков наиболее эффективный способ создания объекта Date? Или я должен просто использовать Date (int year, int month, int day) спокойно, не сообщая остальным?

Пожалуйста, не предлагайте использовать стороннюю библиотеку.

4b9b3361

Ответ 1

С помощью этого вы можете избежать создания инкрементного экземпляра "теперь время".

Date coolDate = new GregorianCalendar(year, month, day).getTime();

Вы можете проверить GregorianCalendar javadoc для других конструкторов. У вас есть дата + время и часовой пояс.

В любом случае я согласен с Джоном Скитом, что это не так дорого. Я согласен с вами, что для кода не требуется инициализация по умолчанию "now".

Ответ 2

"Довольно дорого" несколько расплывчато. Вы действительно пытались использовать код, который вы поставили, измерили и обнаружили, что это слишком дорого? У вас есть конкретное представление о том, насколько дешево вам нужна эта операция?

Кроме того, вы не указали, какой часовой пояс вы хотите представить в Date. УНИВЕРСАЛЬНОЕ ГЛОБАЛЬНОЕ ВРЕМЯ? Часовой пояс по умолчанию? В какое время вы хотите, чтобы это было - полночь или текущее время суток? Ваш текущий код сохранит существующее время суток - это действительно то, что вы хотите?

(Как я упоминал в комментарии, я настоятельно рекомендую вам перейти на Joda Time - но даже если вы этого не сделаете, вы все равно должны проверить, действительно ли у вас есть проблема с вашим существующим кодом, прежде чем искать решение.)

Ответ 3

Независимо от того, что вы используете, если он используется в стандартном API Java, он будет включать использование Calendar (как конструктор Date, так и SimpleDateFormat использовать его внутри), поэтому нет смысла беспокоиться об этом классе предполагаемая неэффективность.

Ответ 4

Я бы просто сделал это:

DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date thisDate = formatter.parse("2010-03-04");

Это довольно эффективно с точки зрения кода; Я не могу говорить о его эффективности во время работы с календарем.