Автор оригинала: Pankaj Kumar.
Классы Java SimpleDateFormat и Формат даты используются для форматирования даты. Он в основном используется там, где нам нужно отображать или использовать функции даты и времени Java. Оба этих класса присутствуют в com.text
пакете.
- Формат даты используется для форматирования даты в строку на основе определенного языка, который предоставляется в качестве входных данных.
- Языковой стандарт используется для указания региона и языка, чтобы сделать код более доступным для пользователя.
- Способ написания даты отличается в разных регионах мира. Например, 31 декабря 2017 года будет записано в Индии как 31-12-2017, но то же самое будет написано в США как 12-31-2017.
- Классы формата даты не синхронизируются, рекомендуется создавать отдельные экземпляры для каждого потока .
Создание экземпляра DateFormat
Объект DateFormat может быть создан с помощью метода getDateInstance()
и getTimeInstance()
класса DateFormat.
Locale loc = new Locale("en", "US"); DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.DEFAULT, loc);
Как показано в приведенном выше примере, методу getDateInstance
DateFormat требуются два входных параметра, первый параметр определяет используемый формат данных, а второй параметр-языковой стандарт.
Пример формата даты Java
Класс DateFormat имеет метод format, который отвечает за форматирование.
Locale locale = new Locale("fr", "FR"); DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.DEFAULT, locale); String date = dateFormat.format(new Date()); System.out.print(date);
Выходные данные: 3 января 2018 г.
В приведенном выше примере для создания экземпляра DateFormat мы используем метод getDateInstance ()
.
Для выполнения формата времени нам нужен экземпляр времени. Мы будем использовать метод getTimeInstance() для получения экземпляра времени.
Locale locale = new Locale("fr", "FR"); DateFormat dateFormat = DateFormat.getTimeInstance(DateFormat.DEFAULT, locale); String date = dateFormat.format(new Date()); System.out.print(date);
Вывод: 11:03:01
Java SimpleDateФормат
SimpleDateFormat очень похож на DateFormat, единственное существенное различие между ними заключается в том, что SimpleDateFormat можно использовать для форматирования (преобразование даты в строку) и для синтаксического анализа ( преобразование строки в дату ) с поддержкой языкового стандарта, в то время как DateFormat не поддерживает языковой стандарт.
Кроме того, формат даты-это абстрактный класс, который обеспечивает базовую поддержку форматирования и анализа даты, SimpleDateFormat-это конкретный класс, который расширяет класс DateFormat.
Создание экземпляра SimpleDateFormat
SimpleDateFormat может быть создан с помощью конструктора SimpleDateFormat, конструктор является параметризованным конструктором и нуждается в строковом шаблоне в качестве параметра.
String pattern = "MM-dd-yyyy"; SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
В приведенном выше примере шаблон строки-это шаблон, который будет использоваться для форматирования даты, и выходные данные будут сгенерированы в этом шаблоне как “ММ-дд-гггг”.
Пример Java SimpleDateFormat
Чтобы проанализировать дату, нам нужно создать экземпляр SimpleDateFormat с помощью конструктора, а затем использовать метод format ().
Давайте рассмотрим пример форматирования даты с помощью SimpleDateFormat.
String pattern = "MM-dd-yyyy"; SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern); String date = simpleDateFormat.format(new Date()); System.out.println(date);
Выходные данные: 01-02-2018
В приведенном выше примере дата-2 января 2018 года.
Для анализа времени мы должны изменить шаблон при создании экземпляра SimpleDateFormat.
String pattern = " HH:mm:ss.SSSZ"; SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern); String date = simpleDateFormat.format(new Date()); System.out.println(date);
Выход: 13:03:15.454+0530
В приведенном выше примере шаблоны представляют собой шаблон времени, и форматирование для текущего времени выполняется на основе шаблона.
Синтаксический анализ с использованием SimpleDateFormat
Синтаксический анализ-это преобразование строки в java.util.Дата
экземпляр. Мы можем проанализировать строку в экземпляр даты, используя parse()
метод класса SimpleDateFormat.
Для анализа строки на сегодняшний день нам нужен экземпляр класса SimpleDateFormat и шаблон строки в качестве входных данных для конструктора класса.
String pattern = "MM-dd-yyyy"; SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern); Date date = simpleDateFormat.parse("12-01-2018"); System.out.println(date);
Выход://Sat Dec 01 00:00: 00-2018
Теперь давайте рассмотрим пример SimpleDateFormat для анализа времени.
String pattern = "HH:mm:ss"; SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern); Date date = simpleDateFormat.parse("22:00:03"); System.out.println(date);
Выход://Ту Янв 01 22:00:03 1970
В приведенном выше примере, поскольку мы не указали никакой даты, программа рассматривала эпоху как дату, т. е. 01 января 1970 года.
Java SimpleDateФормат с языковым стандартом
Мы работали с языковым стандартом как частью формата даты, и мы видели, что языки используются в зависимости от регионов. Давайте подумаем, что мы хотим использовать SimpleDateFormat на французском языке, как этого добиться?
String pattern = "EEEEE MMMMM yyyy HH:mm:ss.SSSZ"; SimpleDateFormat simpleDateFormat =new SimpleDateFormat(pattern, new Locale("fr", "FR")); String date = simpleDateFormat.format(new Date()); System.out.println(date);
Output: вторник, января 2018 14:51:02.354+0530
В приведенном выше примере месяц и день названы на французском языке в зависимости от языкового стандарта, предоставленного в качестве входных данных.
Мы видели разные способы форматирования и синтаксического анализа. Давайте рассмотрим синтаксис шаблона, который следует использовать для шаблона форматирования.
РЕКЛАМА | G | Тихоокеанское стандартное время; PST; GMT-08:00 |
2018(гггг),18(гг) | y | Тихоокеанское стандартное время; PST; GMT-08:00 |
Июль(ММММ), Июль(МММ), 07(ММ) | M | Тихоокеанское стандартное время; PST; GMT-08:00 |
16 | w | Тихоокеанское стандартное время; PST; GMT-08:00 |
3 | W | Тихоокеанское стандартное время; PST; GMT-08:00 |
266 | D | Показывает количество дней в году |
09(dd), 9(d) | d | День месяца |
4 | F | День недели в месяце |
Вторник, Вт | E | Название дня недели |
2 | u | Номер дня недели, где 1 представляет понедельник, 2 представляет вторник и так далее |
АМ | a | Маркер AM или PM |
12 | H | Час в сутках (0-23) |
23 | k | Час в день (1-24) |
0 | K | Час в am/pm для 12-часового формата (0-11) |
12 | h | Час в am/pm для 12-часового формата (1-12) |
59 | m | Минута в час |
35 | s | Секунда в минуту |
978 | S | Миллисекунда в минуту |
Тихоокеанское стандартное время; PST; GMT-08:00 | z | Часовой пояс |
-0800 | Z | Смещение часового пояса в часах (шаблон RFC) |
Тихоокеанское стандартное время; PST; GMT-08:00 | X | Смещение часового пояса в формате ISO |
Примечание: В приведенных выше шаблонах некоторые буквы должны использоваться в разных числах для разных результатов, например, для месяца Июль(ММММ), июль(МММ), 07(ММ) результаты разные.
Пример формата Даты И Времени Java
Мы обсудили различные аспекты DateFormat и SimpleDateFormat. Давайте теперь рассмотрим несколько примеров для различных форматов даты и времени.
01/02/2018 | ММ / dd / yyyy |
02-1-2018 06:07:59 | дд-гггг чч:мм:сс |
02 Января 2018 | дд ММ гггг |
02 Января 2018 По стандартному времени Индии | дд ММММ гггг зззз |
Тю, 02 Янв 2018 18:07: 59 | E, дд МММ гггг ЧЧ:мм:сс z |
Это все для примера java SimpleDateFormat для форматирования даты и анализа строки на сегодняшний день в программах java.
Ссылка: Документ API SimpleDateFormat , Документ API DateFormat