Amol Aggarwal:
public static long convertDateTimeToEpochMillis(String eventDate,String eventTime) {
String patternMills = "yyyy-MM-dd HH:mm:ss.SSS";
DateTimeFormatter dtf = DateTimeFormatter.ofPattern(pattern);
LocalDateTime localDateTime = LocalDateTime.parse(eventDate + " " +
eventTime, dtf);
}
Isso está dando uma exceção de análise quando eu estou passando 2018-07-19 23:11:52.3
, mas com êxito analisa para 2018-07-19 23:11:52.312
. Eu não quero especificar 3 padrões diferentes para diferentes épocas, como yyyy-MM-dd HH:mm:ss.S
, yyyy-MM-dd HH:mm:ss.SS
e yyyy-MM-dd HH:mm:ss.SSS
.
Posso fornecer um único padrão que vai demorar até 1 / 10th de um segundo, 100th de um segundo e millisec?
m.antkowicz:
Você pode apenas escolher um padrão com três SSS como padrão
String patternMills = "yyyy-MM-dd HH:mm:ss.SSS";
e cumprir lado direito do seu encontro com zeros quando necessário
String eventDate = "2018-07-19 23:11:52.3";
String millis = eventDate.substring(eventDate.lastIndexOf('.')+1);
if(millis.length() < 3)
eventDate += Stream.generate(() -> "0").limit(3 - millis.length()).collect(Collectors.joining(""));
ou usar o método apache agradável:
StringUtils.rightPad(eventDate, 23, '0'); // 23 is string length for "yyyy-MM-dd HH:mm:ss.SSS" pattern
De qualquer forma você também pode adicionar um pouco de validação para verificar a parte restante da cadeia de data