Time Formatting Parsing in Logo
Time formatting and parsing in Java is handled primarily through the java.time
package, which provides a rich set of classes for working with dates and times.
import java.time.LocalDateTime;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;
public class TimeFormattingParsing {
public static void main(String[] args) {
// Here's a basic example of formatting a time
// according to ISO_DATE_TIME, which is similar to RFC3339
ZonedDateTime now = ZonedDateTime.now();
System.out.println(now.format(DateTimeFormatter.ISO_DATE_TIME));
// Time parsing uses DateTimeFormatter
String dateString = "2012-11-01T22:08:41+00:00";
ZonedDateTime t1 = ZonedDateTime.parse(dateString, DateTimeFormatter.ISO_DATE_TIME);
System.out.println(t1);
// You can use predefined formatters or create custom ones
System.out.println(now.format(DateTimeFormatter.ofPattern("h:mma")));
System.out.println(now.format(DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL)));
System.out.println(now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSXXXXX")));
// Custom parsing
String timeString = "8:41 PM";
LocalDateTime t2 = LocalDateTime.parse(timeString, DateTimeFormatter.ofPattern("h:mm a"));
System.out.println(t2);
// For purely numeric representations you can also use String.format
System.out.printf("%d-%02d-%02dT%02d:%02d:%02d-00:00%n",
now.getYear(), now.getMonthValue(), now.getDayOfMonth(),
now.getHour(), now.getMinute(), now.getSecond());
// DateTimeParseException will be thrown on malformed input
try {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss yyyy");
LocalDateTime.parse("8:41PM", formatter);
} catch (Exception e) {
System.out.println("Parsing error: " + e.getMessage());
}
}
}
In Java, time formatting and parsing are handled through the java.time
package, which provides a more comprehensive and flexible API compared to older date-time classes.
The DateTimeFormatter
class is the main tool for formatting and parsing date-time objects. It offers both predefined formats (like ISO_DATE_TIME
) and the ability to create custom formats using patterns.
For parsing, you typically use the parse
method of the appropriate date-time class (like ZonedDateTime
or LocalDateTime
), passing in both the string to parse and the formatter to use.
Java’s date-time API doesn’t use example-based layouts like Go. Instead, you define patterns using letters to represent different components of a date or time. For example, ‘yyyy’ represents a 4-digit year, ‘MM’ a 2-digit month, ‘dd’ a 2-digit day, and so on.
When parsing fails due to malformed input, a DateTimeParseException
is thrown, which you can catch to handle the error.
Remember to handle potential exceptions when parsing dates, as shown in the last example.
This Java code demonstrates equivalent functionality to the original example, showcasing how to format and parse times in various ways using Java’s date-time API.