Sentry Answers>Java>

How Do I Convert a String to a Date in Java?

How Do I Convert a String to a Date in Java?

Abdul D.

The Problem

You don’t know how to convert a String to a Date in Java.

The Solution

The recommended way to convert a String to a Date in Java is to use the DateTimeFormatter class from java.time. The DateTimeFormatter class is thread-safe, making it a better choice for multithreaded environments.

However, DateTimeFormatter requires Java version 8 or later. For older Java versions, you can use the SimpleDateFormat class from the java.text package.

Using DateTimeFormatter

Here’s an example that demonstrates how to convert a String to a LocalDate using the DateTimeFormatter class:

Click to Copy
import java.time.LocalDate; import java.time.format.DateTimeFormatter; public class Main { public static void main(String[] args) { String dateString = "2024-10-09"; DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); LocalDate date = LocalDate.parse(dateString, formatter); System.out.println(date); } }

This generates the following output:

Click to Copy
2024-10-09

Using SimpleDateFormat

Here’s an example that demonstrates how to convert a String to a Date using the SimpleDateFormat class:

Click to Copy
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; class Main { public static void main(String[] args) { String dateString = "2024-10-09"; SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); try { Date date = formatter.parse(dateString); System.out.println("Converted Date: " + date); } catch (ParseException e) { System.out.println("Invalid date format"); } } }

This generates the following output:

Click to Copy
Converted Date: Mon Oct 09 00:00:00 UTC 2024

In this example, SimpleDateFormat is used to define the format of the input string (yyyy-MM-dd). The parse() method attempts to convert the string into a Date object. If the input string doesn’t match the expected format, a ParseException is thrown.

Note: The SimpleDateFormat class is not thread-safe, so you should avoid sharing instances across multiple threads.

Choosing a Date Format

The SimpleDateFormat and DateTimeFormatter classes allow you to define custom date formats, such as:

  • dd/MM/yyyy for dates like 09/10/2024
  • MM-dd-yyyy HH:mm:ss for dates with times, like 10-09-2024 14:00:00

Ensure the format you provide matches the input string to avoid ParseException errors.

The table below provides an overview of the available format pattern symbols for the DateTimeFormatter class:

SymbolMeaningPresentationExamples
GeratextAD; Anno Domini; A
uyearyear2004; 04
yyear-of-erayear2004; 04
Dday-of-yearnumber189
M/Lmonth-of-yearnumber/text7; 07; Jul; July; J
dday-of-monthnumber10
Q/qquarter-of-yearnumber/text3; 03; Q3; 3rd quarter
Yweek-based-yearyear1996; 96
wweek-of-week-based-yearnumber27
Wweek-of-monthnumber4
Eday-of-weektextTue; Tuesday; T
e/clocalized day-of-weeknumber/text2; 02; Tue; Tuesday; T
Fweek-of-monthnumber3
aam-pm-of-daytextPM
hclock-hour-of-am-pm (1-12)number12
Khour-of-am-pm (0-11)number0
kclock-hour-of-am-pm (1-24)number0
Hhour-of-day (0-23)number0
mminute-of-hournumber30
ssecond-of-minutenumber55
Sfraction-of-secondfraction978
Amilli-of-daynumber1234
nnano-of-secondnumber987654321
Nnano-of-daynumber1234000000
Vtime-zone IDzone-idAmerica/Los_Angeles; Z; -08:30
ztime-zone namezone-namePacific Standard Time; PST
Olocalized zone-offsetoffset-OGMT+8; GMT+08:00; UTC-08:00;
Xzone-offset ‘Z’ for zerooffset-XZ; -08; -0830; -08:30; -083015; -08:30:15;
xzone-offsetoffset-x+0000; -08; -0830; -08:30; -083015; -08:30:15;
Zzone-offsetoffset-Z+0000; -0800; -08:00;
  • Sentry BlogException Handling in Java (with Real Examples) (opens in a new tab)
  • Syntax.fmListen to the Syntax Podcast (opens in a new tab)
  • Syntax.fm logo
    Listen to the Syntax Podcast (opens in a new tab)

    Tasty treats for web developers brought to you by Sentry. Get tips and tricks from Wes Bos and Scott Tolinski.

    SEE EPISODES

Considered “not bad” by 4 million developers and more than 150,000 organizations worldwide, Sentry provides code-level observability to many of the world’s best-known companies like Disney, Peloton, Cloudflare, Eventbrite, Slack, Supercell, and Rockstar Games. Each month we process billions of exceptions from the most popular products on the internet.