Java Дата против Календарь - PullRequest
       69

Java Дата против Календарь

350 голосов
/ 10 сентября 2009

Может ли кто-нибудь посоветовать текущую "наилучшую практику" по типам Date и Calendar.

При написании нового кода лучше всегда отдавать предпочтение Calendar над Date, или есть обстоятельства, когда Date является более подходящим типом данных?

Ответы [ 13 ]

1 голос
/ 01 октября 2013

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

В нашем естественном разговоре, если назначить встречу на 1 ноября 2013 г. 13:00 по нью-йоркскому времени, это DateTime. Это НЕ Календарь. Таким образом, мы должны иметь возможность общаться и в Java.

Когда Дата хранится в виде длинного целого числа (в миллионах секунд с 1 января 1970 года или около того), расчет текущей даты зависит от календаря. Разные календари будут давать разные даты. Это с точки зрения предоставления абсолютного времени (например, 1 триллион секунд после Большого взрыва). Но часто нам также нужен удобный способ общения, например, год, месяц и т. Д.

Интересно, есть ли новые достижения в Java для согласования этих двух целей? Может быть, мои знания Java слишком стары.

0 голосов
/ 03 июля 2018

Я использую Календарь, когда мне нужны какие-то конкретные операции над датами, такие как перемещение во времени, но Дата Я считаю полезным, когда вам нужно отформатировать дату, чтобы адаптировать ваши потребности, недавно я обнаружил, что в Locale есть много полезных операций и Таким образом, я использую Locale прямо сейчас!

0 голосов
/ 26 мая 2015

Кстати, «дата» обычно помечается как «устаревшая / устаревшая» (я точно не знаю, почему) - там написано что-то об этом Java: почему конструктор Date устарел и что вместо него использовать?

Похоже, проблема только в конструкторе - через новую дату (int year, int month, int day) , рекомендуемый способ - через календарь и устанавливать параметры отдельно .. ( Календарь cal = Calendar.getInstance (); )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...