Core Java

Get Date and Time From a Datetime String in Java

Working with date and time is a common task in programming. In Java, a String containing both date and time values often needs to be parsed and manipulated to extract specific parts, such as the date or time. Let us delve into understanding how to work with Java Date and Time by converting from a string.

1. Understanding the Problem

Suppose we have a datetime string in the format "yyyy-MM-dd HH:mm:ss" (e.g., "2024-09-27 14:35:50"). Our task is to extract the date (e.g., 2024-09-27) and time (e.g., 14:35:50) separately.

2. Using split()

The simplest way to extract the date and time from a datetime string is by using the split() method. Since the date and time parts are separated by space, we can split the string by space and get both components.

2.1 Code Example and Output

public class DateTimeSplitter {
  public static void main(String[] args) {
    String datetime = "2024-09-27 14:35:50";
    String[] parts = datetime.split(" ");

    String date = parts[0];
    String time = parts[1];

    System.out.println("Date: " + date);
    System.out.println("Time: " + time);
  }
}

The code defines a:

  • We define a String containing the datetime.
  • We use the split() method to separate the datetime by the space character, storing the results in an array.
  • The first part of the array is the date, and the second part is the time.
  • Finally, we print the date and time separately.

When the code is executed, the following output will appear in the IDE console:

Date: 2024-09-27
Time: 14:35:50

3. Using DateTimeFormatter

A more structured approach is to use the DateTimeFormatter class from Java’s java.time package. It provides better control over parsing and formatting datetime strings.

3.1 Code Example and Output

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class DateTimeFormatterExample {
  public static void main(String[] args) {
    String datetime = "2024-09-27 14:35:50";

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    LocalDateTime localDateTime = LocalDateTime.parse(datetime, formatter);

    String date = localDateTime.toLocalDate().toString();
    String time = localDateTime.toLocalTime().toString();

    System.out.println("Date: " + date);
    System.out.println("Time: " + time);
  }
}

The code defines a:

  • We create a DateTimeFormatter object with the pattern matching our datetime string.
  • The LocalDateTime.parse() method is used to convert the string into a LocalDateTime object. For a guide on LocalDateTime follow the official documentation.
  • We then extract the date part using toLocalDate() and the time part using toLocalTime().
  • Finally, we print the extracted date and time.

When the code is executed, the following output will appear in the IDE console:

Date: 2024-09-27
Time: 14:35:50

4. Using Regular Expressions

Regular expressions provide a flexible way to extract patterns from strings. We can use a regular expression to directly match and extract the date and time parts from a datetime string.

4.1 Code Example and Output

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class DateTimeRegex {
  public static void main(String[] args) {
    String datetime = "2024-09-27 14:35:50";
    String regex = "(\\d{4}-\\d{2}-\\d{2})\\s(\\d{2}:\\d{2}:\\d{2})";

    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(datetime);

    if (matcher.find()) {
      String date = matcher.group(1);
      String time = matcher.group(2);

      System.out.println("Date: " + date);
      System.out.println("Time: " + time);
    } else {
      System.out.println("No match found!");
    }
  }
}

The code defines a:

  • We define a regular expression that matches the date and time parts of the string.
  • The regular expression (\\d{4}-\\d{2}-\\d{2})\\s(\\d{2}:\\d{2}:\\d{2}) breaks the datetime into two groups: the date and the time.
  • We use the Pattern and Matcher classes to find matches in the string.
  • If a match is found, the groups are extracted and printed. If no match is found, a message is printed indicating that.

When the code is executed, the following output will appear in the IDE console:

Date: 2024-09-27
Time: 14:35:50

5. Conclusion

Extracting the date and time from a datetime string in Java can be done in several ways depending on the complexity of the task. The split() method works for simple cases, while DateTimeFormatter provides more structure and control. If you need flexible pattern matching, regular expressions offer a robust solution.

5.1 Summary

ApproachEase of UseFlexibilityPerformanceCode ReadabilityBest Use Case
split()SimpleLow (Only works with basic string separation by a delimiter)High (Since it’s a basic string operation)High (Minimal code and easy to understand)For very simple datetime strings where the separator is known and consistent.
DateTimeFormatterModerateHigh (Supports complex date/time formats)Moderate (Parsing involves more overhead than split)High (Clear structure and formatting)When working with well-defined datetime formats, especially when converting to/from different formats.
Regular ExpressionsComplexVery High (Highly flexible for matching patterns)Low to Moderate (Depends on the complexity of the regular expression)Low (Can be difficult to read and maintain)When you need to handle complex patterns, variable formats, or partial matching of datetime strings.

Yatin Batra

An experience full-stack engineer well versed with Core Java, Spring/Springboot, MVC, Security, AOP, Frontend (Angular & React), and cloud technologies (such as AWS, GCP, Jenkins, Docker, K8).
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Back to top button