padrão único para java tempo 8 data

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.SSe 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

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=202741&siteId=1
Recomendado
Clasificación