В этом уроке мы покажем вам, как преобразовать строку в java.util. Дата
. Многие новички Java застряли в преобразовании данных, надеюсь, это краткое руководство поможет вам в чем-то.
// String -> Date SimpleDateFormat.parse(String); // Date -> String SimpleDateFormat.format(date);
Некоторые общие шаблоны даты и времени, используемые в java.text, приведены в таблице ниже. SimpleDateFormat
, обратитесь к этому javadoc
Письмо | Описание | Примеры |
y | Год | 2013 |
M | Месяц в году | 07, 7 июля |
d | День в месяце | 1-31 |
E | Название дня в неделе | Пятница, Воскресенье |
a | Маркер Am/pm | УТРА, ВЕЧЕРА |
H | Час в день | 0-23 |
h | Час в am/pm | 1-12 |
m | Минута в час | 0-60 |
s | Секунда в минуте | 0-60 |
УТРА, ВЕЧЕРА
Если 3 ‘M’, то месяц интерпретируется как текст (Пн-дек), другое число (01-12).
package com.mkyong.date; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class TestDateExample1 { public static void main(String[] argv) { SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy"); String dateInString = "7-Jun-2013"; try { Date date = formatter.parse(dateInString); System.out.println(date); System.out.println(formatter.format(date)); } catch (ParseException e) { e.printStackTrace(); } } }
Выход
Fri Jun 07 00:00:00 MYT 2013 07-Jun-2013
2./06/2013
package com.mkyong.date; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class TestDateExample2 { public static void main(String[] argv) { SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); String dateInString = "07/06/2013"; try { Date date = formatter.parse(dateInString); System.out.println(date); System.out.println(formatter.format(date)); } catch (ParseException e) { e.printStackTrace(); } } }
Выход
Fri Jun 07 00:00:00 MYT 2013 07/06/2013
3., 7 июня 2013 г.
package com.mkyong.date; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class TestDateExample3 { public static void main(String[] argv) { SimpleDateFormat formatter = new SimpleDateFormat("E, MMM dd yyyy"); String dateInString = "Fri, June 7 2013"; try { Date date = formatter.parse(dateInString); System.out.println(date); System.out.println(formatter.format(date)); } catch (ParseException e) { e.printStackTrace(); } } }
Выход
Fri Jun 07 00:00:00 MYT 2013 Fri, Jun 07 2013
4., 7 июня 2013 года 12:10:56 ВЕЧЕРА
package com.mkyong.date; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class TestDateExample4 { public static void main(String[] argv) { SimpleDateFormat formatter = new SimpleDateFormat("EEEE, MMM dd, yyyy HH:mm:ss a"); String dateInString = "Friday, Jun 7, 2013 12:10:56 PM"; try { Date date = formatter.parse(dateInString); System.out.println(date); System.out.println(formatter.format(date)); } catch (ParseException e) { e.printStackTrace(); } } }
Выход
Fri Jun 07 12:10:56 MYT 2013 Friday, Jun 07, 2013 12:10:56 PM
5.-10-05T15:23:01Z
Суффикс Z означает UTC, java.util. SimpleDateFormat
не анализирует его правильно, вам нужно заменить суффикс Z на ‘+0000’.
package com.mkyong.date; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class TestDateExample5 { public static void main(String[] argv) { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); String dateInString = "2014-10-05T15:23:01Z"; try { Date date = formatter.parse(dateInString.replaceAll("Z$", "+0000")); System.out.println(date); System.out.println("time zone : " + TimeZone.getDefault().getID()); System.out.println(formatter.format(date)); } catch (ParseException e) { e.printStackTrace(); } } }
Выход
Sun Oct 05 23:23:01 MYT 2014 time zone : Asia/Kuala_Lumpur 2014-10-05T23:23:01+0800
В Java 8 вы можете преобразовать его в java.time. Мгновенный
объект и отобразите его с указанным часовым поясом.
package com.mkyong.date; import java.time.*; public class TestDateExample6 { public static void main(String[] argv) { String dateInString = "2014-10-05T15:23:01Z"; Instant instant = Instant.parse(dateInString); System.out.println(instant); //get date time only LocalDateTime result = LocalDateTime.ofInstant(instant, ZoneId.of(ZoneOffset.UTC.getId())); System.out.println(result); //get date time + timezone ZonedDateTime zonedDateTime = instant.atZone(ZoneId.of("Africa/Tripoli")); System.out.println(zonedDateTime); //get date time + timezone ZonedDateTime zonedDateTime2 = instant.atZone(ZoneId.of("Europe/Athens")); System.out.println(zonedDateTime2); } }
Выход
2014-10-05T15:23:01Z 2014-10-05T15:23:01 2014-10-05T17:23:01+02:00[Africa/Tripoli] 2014-10-05T18:23:01+03:00[Europe/Athens]
Рекомендации
- Простой формат данных javadoc
- Java 8 – Как преобразовать строку в LocalDate
- Stackoverflow: упрощенный формат данных, анализирующий данные с помощью ‘Z “буквальный
- Википедия: ISO 8601
- Классы часового пояса и смещения
- GMT ПРОТИВ UTC
- Что такое Часовой пояс?
- Время Джоды
Оригинал: “https://mkyong.com/java/how-to-convert-string-to-date-java/”