EN
Java 8 - how to create custom DateTimeFormatter with DateTimeFormatterBuilder?
4 points
Java 8 introduced DateTimeFormatter and DateTimeFormatterBuilder to give programmers more control over date time formats.
DateTimeFormatter has already build-in date time formatters.
We can use DateTimeFormatterBuilder to create our own date time formatter.
Code example:
xxxxxxxxxx
1
import java.time.LocalDateTime;
2
import java.time.format.DateTimeFormatter;
3
import java.time.format.DateTimeFormatterBuilder;
4
import java.time.temporal.ChronoField;
5
6
public class DateTimeFormatterBuilderExample1 {
7
8
public static void main(String[] args) {
9
10
DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder();
11
12
DateTimeFormatter formatter = builder
13
//
14
.appendLiteral("year: ")
15
.appendValue(ChronoField.YEAR)
16
//
17
.appendLiteral(", month: ")
18
.appendValue(ChronoField.MONTH_OF_YEAR)
19
//
20
.appendLiteral(", day: ")
21
.appendValue(ChronoField.DAY_OF_MONTH)
22
//
23
.toFormatter();
24
25
LocalDateTime localDateTime = LocalDateTime.now();
26
String dateTimeNow = localDateTime.format(formatter);
27
28
// 2019-10-12T15:21:15.096
29
System.out.println(localDateTime);
30
31
// year: 2019, month: 10, day: 12
32
System.out.println(dateTimeNow);
33
}
34
}
Output:
xxxxxxxxxx
1
2019-10-12T15:21:15.096
2
year: 2019, month: 10, day: 12
Code example:
xxxxxxxxxx
1
import java.time.LocalDateTime;
2
import java.time.format.DateTimeFormatter;
3
import java.time.format.DateTimeFormatterBuilder;
4
import java.time.temporal.ChronoField;
5
6
public class DateTimeFormatterBuilderExample2 {
7
8
public static void main(String[] args) {
9
10
DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder();
11
12
DateTimeFormatter formatter = builder.
13
//
14
appendLiteral("year: ")
15
.appendValue(ChronoField.YEAR)
16
//
17
.appendLiteral(", month: ")
18
.appendValue(ChronoField.MONTH_OF_YEAR)
19
//
20
.appendLiteral(", day: ")
21
.appendValue(ChronoField.DAY_OF_MONTH)
22
//
23
.appendLiteral(", hour: ")
24
.appendValue(ChronoField.HOUR_OF_DAY)
25
//
26
.appendLiteral(", minute: ")
27
.appendValue(ChronoField.MINUTE_OF_HOUR)
28
//
29
.appendLiteral(", second: ")
30
.appendValue(ChronoField.SECOND_OF_MINUTE)
31
//
32
.appendLiteral(", milli: ")
33
.appendValue(ChronoField.MILLI_OF_SECOND)
34
//
35
.appendLiteral(", micro: ")
36
.appendValue(ChronoField.MICRO_OF_SECOND)
37
//
38
.toFormatter();
39
40
LocalDateTime localDateTime = LocalDateTime.now();
41
String dateTimeNow = localDateTime.format(formatter);
42
43
// 2019-10-12T15:21:57.407
44
System.out.println(localDateTime);
45
46
// year: 2019, month: 10, day: 12,
47
// hour: 15, minute: 21, second: 57, milli: 407, micro: 407000
48
System.out.println(dateTimeNow);
49
}
50
}
Output:
xxxxxxxxxx
1
2019-10-12T15:21:57.407
2
year: 2019, month: 10, day: 12, hour: 15, minute: 21, second: 57, milli: 407, micro: 407000