How to Convert a String to Date in Java


How to Convert a String to Date in Java

Converting a string to a date in Java (or any programming language) is a fundamental skill and is useful to know when working on projects. Sometimes, it is easier to work with a string to represent a date, and then convert it to a date object for further use.

Date  API

The Date / Time API in Java works by default with the ISO 8601 format, which is (yyyy-MM-dd).By default all dates follow this format, and all strings that are converted should follow this if they are using the default formatter.

parse()

The date-time API provides parse () methods to parse a string that contains date information. To convert string objects to LocalDateTime objects, the string must represent a valid date or time according to ISO_LOCAL_DATE

Example, let's convert a String to a java.time.LocalDate:

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

Parse API with a Custom Formate

This format specifies three characters for the full day name of the week, one digit to represent the day of the month, three characters to represent the month, and four digits to represent the year.

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

In this tutorial, we will show you how to convert a string to java.util.Date. Many Java are stuck in early date conversion, hope this summary guide will help you in some ways.

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

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

Common Date and Time Patterns

  • y – Year (1998; 98)
  • M – Month in year (July; Jul; 10)
  • 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)

Adding Time Zone Information to java.util.Date


It is important to note that java.util.Date has no concept of time zone, and only represents the number of seconds passed since the Unix era - 1979-01-01T00: 00: 00Z.
But, when we print the date object directly, it will always be printed with the Java default system time zone.
In this last example, we'll look at how to format the date by adding time zone information:

Convert String to Date: Function


After this section I have shared a complete example to display the string in various date formats for date conversion. For those who want only one function for this conversion, here is the function code:




// Java program to convert String to Date 
 
import java.time.Instant; 
import java.time.format.DateTimeParseException; 
 
class GFG { 
 
        // Function tot convert String to Date 
        public static Instant getDateFromString(String string) 
        { 
 
               // Create an Instant object 
               Instant timestamp = null; 
 
               // Parse the String to Date 
               timestamp = Instant.parse(string); 
 
               // return the converted timestamp 
               return timestamp; 
        } 
 
        public static void main(String[] args) 
        { 
               // Get the String 
               String string = "2018-10-28T15:23:01Z"; 
 
               // Get the Date from String 
               try { 
 
                       Instant timestamp = getDateFromString(string); 
 
                       // Print the converted Date 
                       System.out.println(timestamp); 
               } 
 
               // Throws DateTimeParseException 
               // if the string cannot be parsed 
               catch (DateTimeParseException e) { 
 
                       System.out.println("Exception: " + e); 
               } 
        } 
}
 
 
Output:

2018-10-28T15:23:01Z

Comments