Строку в datetime java

How to convert String to Date – Java

In this tutorial, we will show you how to convert a String to java.util.Date . Many Java beginners are stuck in the Date conversion, hope this summary guide will helps you in some ways.

 // String -> Date SimpleDateFormat.parse(String); // Date -> String SimpleDateFormat.format(date); 

Refer to table below for some of the common date and time patterns used in java.text.SimpleDateFormat , refer to this JavaDoc

Letter Description Examples
y Year 2013
M Month in year July, 07, 7
d Day in month 1-31
E Day name in week Friday, Sunday
a Am/pm marker AM, PM
H Hour in day 0-23
h Hour in am/pm 1-12
m Minute in hour 0-60
s Second in minute 0-60

1. String = 7-Jun-2013

If 3 ‘M’, then the month is interpreted as text (Mon-Dec), else number (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. String = 07/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. String = Fri, June 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. String = Friday, Jun 7, 2013 12:10:56 PM

 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. String = 2014-10-05T15:23:01Z

Z suffix means UTC, java.util.SimpleDateFormat doesn’t parse it correctly, you need to replace the suffix Z with ‘+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 

In Java 8, you can convert it into a java.time.Instant object, and display it with a specified time zone.

 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] 

References

mkyong

Founder of Mkyong.com, love Java and open source stuff. Follow him on Twitter. If you like my tutorials, consider make a donation to these charities.

Читайте также:  Python открыть изображение в окне

Comments

How to convert below string “2020-11-22T05:57:10+01:00” using Java8 ?

Hi I have a requirement to convert DateofBirth, StartDate and TerminationDate fields in a file with about 100 lines. The current date format is 00.00.0000 and the requirement is 00/00/0000.

Thanks. This came in handy for me!

Hi, in your program you have DateFormat defined as ‘dd-MMM-yyyy’ then how come 23-September-2015 is a valid date as well? I’ve tried setting up lenient to false but that still won’t work, any suggestions please?

Hi
How to handle the format “2020–03–01 3:15 pm”?

Yoo solor quiero insertar una hora en mi base de datos y no entiendo nada!! el dato de mi base de datos es date, pero solo quiero pner hora por ejemplo 2:30 solo eso

In Method 4 4. String = Friday, Jun 7, 2013 12:10:56 PM
my requirement is if time is less than 12 (Friday, Jun 7, 2013 11:10:56 PM ) i am getting Unparseable date:
But in 12 hours format that is how we will write date.

Hello Sir,
I would like to ask, how to convert six june 1990 to 06/06/1990. Thanks

Do any one know what will be the formatter for this: 2018-06-19 14:59:29.0T-07:00
Thank you!

Hello Sir,
In example 5th the string i have passed is String = 14-10-05T15:23:01Z so in this case the output which i am getting is
Sun Oct 05 23:23:01 MYT 0014
time zone : Asia/Kuala_Lumpur
0014-10-05T23:23:01+0800
instead of parse exception which is causing data corruption. Please help how to handle this case ?

hello in my DB i Have declared month like a Long type ..so in my function I wan to use month like a Long value not String ..example : July i need it 07
How to proceed for that conversion ?

Hi Mkyong, Thanks. This came in handy for me!

Can you please guide me here –

import java.util.*;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;

/*Java date format issue
Input- 2016-11-23 23:38:03.850454 having milisec and nano in format
output- 20161123233803850454 in format YYYYMMDDHHmmssSSSSSS
my output- 201612361235213000454 which is incorrect , need help
*/
public class TestingDate
public static void main(String[] args) throws ParseException
TestingDate obj = new TestingDate();
System.out.println(obj.check(“2016-11-23 23:38:03.850454”));
>
public String check(String string) throws ParseException
String dateStr = string;
DateFormat srcDf = new SimpleDateFormat(“YYYY-MM-DD HH:mm:ss.SSSSSS”);
Date date = srcDf.parse(dateStr);
DateFormat destDf = new SimpleDateFormat(“YYYYMMDDHHmmssSSSSSS”);
dateStr = destDf.format(date);
return dateStr ;
>
>

Читайте также:  Создать footer css html

Источник

Преобразовать строку в дату в Java

В этом руководствеwe’ll explore several ways to convert String objects into Date objects. Мы начнем с нового APIDate Timejava.time, который был представлен в Java 8, прежде чем рассмотрим старый тип данныхjava.util.Date, также используемый для представления дат.

В завершение мы также рассмотрим некоторые внешние библиотеки для преобразования с использованием Joda-Time и класса Apache Commons LangDateUtils.

2. ПреобразованиеString вLocalDate илиLocalDateTime

[.s1]#LocalDate # and LocalDateTime are неизменяемые объекты даты и времени, которые представляют дату, а затем дату и время. По умолчанию даты Java находятся в формате ISO-8601, поэтому, если у нас есть какая-либо строка, представляющая дату и время в этом формате, тогдаwe can use the parse() API of these classes directly.

Here ‘немного подробнее об этом новом API.

2.1. Использование APIParse

T he Date-Time API provide parse() methods for parsing a String that contains date and time information. To convert String objects to LocalDate and LocalDateTime objects, the String must represent a valid date or time согласноISO_LOCAL_DATE илиISO_LOCAL_DATE_TIME.

В противном случае во время выполнения будет выданDateTimeParseException.

В нашем первом примере давайте преобразуемString вjava.time.LocalDate:

LocalDate date = LocalDate.parse("2018-05-05");

Аналогичный подход, описанный выше, можно использовать для преобразованияString вjava.time.LocalDateTime:

LocalDateTime dateTime = LocalDateTime.parse("2018-05-05T11:50:55");

Важно отметить, что объектыLocalDate иLocalDateTime не зависят от часового пояса. Однако методwhen we need to deal with time zone specific date and times we can use the ZonedDateTimeparse напрямую для получения даты и времени для конкретного часового пояса:

ZonedDateTime zonedDateTime = ZonedDateTime.parse("2015-05-05T10:15:30+01:00[Europe/Paris]");

Теперь давайте посмотрим, как мы конвертируем строки в произвольном формате.

2.2. Использование APIParse с пользовательским форматером

ПреобразованиеString с настраиваемым форматом даты в объектDate — широко распространенная операция в Java.

Для этогоwe’ll use the DateTimeFormatter class which provides numerous predefined formatters, и позволяет нам определить средство форматирования.

Начнем с примера использования одного из предопределенных средств форматированияDateTimeFormatter:

String dateInString = "19590709"; LocalDate date = LocalDate.parse(dateInString, DateTimeFormatter.BASIC_ISO_DATE);

В следующем примере давайте создадим средство форматирования, которое применяет формат «EEE, MMM d yyyy». Этот формат определяет три символа для полного имени дня недели, одну цифру для обозначения дня месяца, три символа для представления месяца и четыре цифры для представления года.

Это средство форматирования распознает такие строки, как «Fri, 3 Jan 2003″ or “Wed, 23 Mar 1994»:

String dateInString = "Mon, 05 May 1980"; DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEE, d MMM yyyy", Locale.ENGLISH); LocalDate dateTime = LocalDate.parse(dateInString, formatter);

2.3. Общие шаблоны даты и времени

Давайте посмотрим на некоторые общие шаблоны даты и времени:

  • y – Год (1996; 96)
  • M – Месяц в году (июль; июль; 07)
  • d — День в месяце (1-31)
  • E — название дня недели (пятница, воскресенье)
  • a Маркер Am / PM (AM, PM)
  • H — Час в сутки (0-23)
  • h — Час в am / pm (1-12)
  • m — Минута в часе (0-60)
  • s — секунда в минуте (0-60)
Читайте также:  Изменение одного поля php

Чтобы увидеть полный список символов, которые мы можем использовать для определения шаблона для синтаксического анализа, щелкнитеhere.

Если нам нужно преобразовать датыjava.time в более старый объектjava.util.Date, прочтите статьюthis для получения дополнительных сведений.

3. ПреобразованиеString вjava.util.Date

Before Java 8, the Java date and time mechanism was provided by the old APIs of java.util.Date, java.util.Calendar, and java.util.TimeZone classes, с которым иногда все же нужно работать.

Давайте посмотрим, как преобразовать String в объектjava.util.Date:

SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH); String dateInString = "7-Jun-2013"; Date date = formatter.parse(dateInString);

В приведенном выше примереwe first need to construct a SimpleDateFormat object путем передачи шаблона, описывающего формат даты и времени.

Затем нам нужно вызвать методparse(), передав датуString. Если переданный аргументString не в том же формате, что и шаблон, тогда будет брошенParseException.

3.1. Добавление информации о часовом поясе вjava.util.Date

It’s important to note that the java.util.Date has no concept of time zone, и представляет только количество секунд, прошедших с момента эпохи Unix — 1970-01-01T00: 00: 00Z.

Но когда мы печатаем объектDate напрямую, он всегда будет печататься с системным часовым поясом Java по умолчанию.

В этом последнем примере мы рассмотрим, как отформатировать дату, добавив информацию о часовом поясе:

SimpleDateFormat formatter = new SimpleDateFormat("dd-M-yyyy hh:mm:ss a", Locale.ENGLISH); formatter.setTimeZone(TimeZone.getTimeZone("America/New_York")); String dateInString = "22-01-2015 10:15:55 AM"; Date date = formatter.parse(dateInString); String formattedDateString = formatter.format(date);

Мы также можем изменить часовой пояс JVM программно, но это не рекомендуется:

TimeZone.setDefault(TimeZone.getTimeZone("GMT"));

4. Внешние библиотеки

Теперь, когда у нас есть хорошее понимание того, как преобразовать объектыString в объектыDate, используя новые и старые API, предлагаемые ядром Java, давайте взглянем на некоторые внешние библиотеки.

4.1. Joda-Time Library

Альтернативой базовой библиотеке JavaDate иTime являетсяJoda-Time. Хотя сейчас авторы рекомендуют пользователям перейти наjava.time (JSR-310), если это невозможно, то наJoda-Time library provides an excellent alternative for working with Date and Time. Эта библиотека предоставляет практически все возможности, поддерживаемые в проекте Java 8Date Time.

Вот быстрый пример работы со стандартнымDateTime:

DateTimeFormatter formatter = DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss"); String dateInString = "07/06/2013 10:11:59"; DateTime dateTime = DateTime.parse(dateInString, formatter);

Давайте также посмотрим на пример явной установки часового пояса:

DateTimeFormatter formatter = DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss"); String dateInString = "07/06/2013 10:11:59"; DateTime dateTime = DateTime.parse(dateInString, formatter); DateTime dateTimeWithZone = dateTime.withZone(DateTimeZone.forID("Asia/Kolkata"));

4.2. Apache Commons Lang — DateUtils

КлассDateUtils предоставляет многоuseful utilities making it easier to work with the legacy Calendar and Date objects.

Артефакт commons-lang3 доступен по адресуMaven Central:

 org.apache.commons commons-lang3 3.7 

Давайте преобразуем датуString, используяArray шаблонов даты, вjava.util.Date:

String dateInString = "07/06-2013"; Date date = DateUtils.parseDate(dateInString, new String[] < "yyyy-MM-dd HH:mm:ss", "dd/MM-yyyy" >);

5. Заключение

В этой статье мы проиллюстрировали несколько способов преобразования строк в различные типы объектовDate (со временем и без него), как в простой Java, так и с использованием внешних библиотек.

Полный исходный код статьи доступенover on GitHub.

Источник

Оцените статью