Java Instant to LocalDateTime завершающий ноль
Я конвертировал Instant в LocalDateTime в Java с помощью Spring Boot, как показано ниже
LocalDateTime.ofInstant(timeInUtc, zoneId);
В моем тесте я получил Regex, чтобы проверить, возвращает ли мой ресурс Json с LocalDateTime. Regex ожидает значение JSON в формате:
2018-11-15T08:38:49.382
Но похоже, что конечный ноль удаляется, то есть вместо
2018-11-15T08:38:49.380
что бы соответствовать регулярному выражению, я получаю
2018-11-15T08:38:49.38
Как я могу убедиться, что конечный ноль не удален?
Заранее спасибо!
1 ответ
Форматирование даты поможет сохранить конечный ноль
DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS")
Вывод выглядит так:
2018-11-15T08: 03: 45,580
Код ниже:
public class Post2 {
public static void main(String[] args) {
String date = LocalDateTime.ofInstant(Instant.now(), ZoneId.of("UTC"))
.format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS"));
System.out.println(date);
}
}
РЕДАКТИРОВАТЬ Добавление соответствия регулярных выражений, чтобы соответствовать времени даты с и без миллисекунд.
String regex = "^\\d\\d\\d\\d-(0?[1-9]|1[0-2])-(0?[1-9]|[12][0-9]|3[01]) (00|[0-9]|1[0-9]|2[0-3]):([0-9]|[0-5][0-9]):([0-9]|[0-5][0-9])(\\.{0,1}[0-9]{1,3})$";
String str1 = "2015-1-11 13:57:24";
String str2 = "2015-1-11 13:57:24.0";
String str3 = "2015-1-11 13:57:24.00";
String str4 = "2015-1-11 13:57:24.000";
String str5 = "2015-1-11 13:57:24.1";
String str6 = "2015-1-11 13:57:24.12";
String str7 = "2015-1-11 13:57:24.1222";
String str8 = "2015-1-11 13:57:24.02";
System.out.println( str1.matches(regex));
System.out.println(str2.matches(regex));
System.out.println(str3.matches(regex));
System.out.println(str4.matches(regex));
System.out.println(str5.matches(regex));
System.out.println(str6.matches(regex));
System.out.println(str7.matches(regex));
System.out.println(str8.matches(regex));
выход:
true
true
true
true
true
true
false
true