Cómo convertir una cadena de fecha y hora a larga (UNIX Epoch Time) en Java 8 (Scala)

Quiero el Tiempo de Época UNIX (Tiempo Posix, Tiempo Unix) de una cadena en algunapattern, la cadena está en formato normal (por lo tanto, UTC). Utilice Java 8, no Joda o Java antiguo.

(Para milisegundos, consulte Cómo convertir una cadena de fecha y hora a milisegundos largos (tiempo de época UNIX) en Java 8 (Scala))

Hasta ahora tengo lo siguiente, pero odio esto por varias razones:

Es demasiado detallado para lo que es lo más común que se puede hacer con las fechas (convertir a UNIX Epoch Time). 7 métodos requieren lo que debería ser 1. Tiene que especificar UTC, pero seguramente UTC es solo un valor predeterminado, ¿por qué tengo que ser explícito aquí? Tiene una cadena literal"UTC" Tiene un número mágicoZoneOffset.ofHours(0)

Mi mejor hasta ahora:

def dateTimeStringToEpoch(s: String, pattern: String): Long = 
    LocalDateTime.parse(s, DateTimeFormatter.ofPattern(pattern))
      .atZone(ZoneId.ofOffset("UTC", ZoneOffset.ofHours(0)))
      .toInstant().getEpochSeconds

También, pregunta extra, ¿es eficiente? ¿Hay alguna sobrecarga para crear laDateTimeFormatter viaDateTimeFormatter.ofPattern(pattern)? Si es así, ¿por qué?

Respuestas a la pregunta(3)

Su respuesta a la pregunta