samthebest :
나는 약간의 문자열의 UNIX 신기원 시간 POSIX (시간, 유닉스 시간) 원하는 pattern
문자열은 일반 형식 (UTC 있도록)입니다. 자바 8하지 Joda 또는 오래된 자바를 사용하시기 바랍니다.
(밀리 초를 참조하시기 바랍니다 ) 자바 8 (스칼라 (UNIX 신기원 시간) 밀리 초 길이로 날짜 시간 문자열을 변환하는 방법 )
지금까지 나는 아래를 가지고,하지만 난 이유로이 싫어 :
- 그것은 날짜 (UNIX 신기원 시간으로 변환)과 함께 할 수있는 가장 일반적인 것은 무엇 너무 자세한 방법입니다. 어떤 일을해야합니다 위해 7 방법은 호출합니다.
- 그것은 UTC를 지정할 수있다, 그러나 확실하게 UTC는 내가 왜 여기에 명시해야합니까, 그냥 기본값입니다?
- 그것은 문자열 리터럴을 가지고
"UTC"
- 그것은 마법의 번호를 가지고
ZoneOffset.ofHours(0)
지금까지 내 최고의 :
def dateTimeStringToEpoch(s: String, pattern: String): Long =
LocalDateTime.parse(s, DateTimeFormatter.ofPattern(pattern))
.atZone(ZoneId.ofOffset("UTC", ZoneOffset.ofHours(0)))
.toInstant().getEpochSeconds
또한, 보너스 질문, 그것은 효율적인가요? 만드는 오버 헤드 있습니까 DateTimeFormatter
통해이 DateTimeFormatter.ofPattern(pattern)
? 왜하면?
ETO :
이 사람은 2 배 이상 짧은입니다 ( 단 3 메서드 호출 ) :
def dateTimeStringToEpoch(s: String, pattern: String): Long =
LocalDateTime.parse(s, DateTimeFormatter.ofPattern(pattern))
.toEpochSecond(ZoneOffset.UTC)
BTW, 나는 만들 것이다 DateTimeFormatter
외부 dateTimeStringToEpoch
와 메소드 매개 변수로 전달 :
def dateTimeStringToEpoch(s: String, formatter: DateTimeFormatter): Long =
LocalDateTime.parse(s, formatter).toEpochSecond(ZoneOffset.UTC)
실제로 성능 테스트를 실행하는 데는 초기화하는 성능에 약간의 차이 (2의 거의 배)가 DateTimeFormatter
외부에게 방법.
scala> val pattern = "yyyy/MM/dd HH:mm:ss"
pattern: String = yyyy/MM/dd HH:mm:ss
scala> time(() => randomDates.map(dateTimeStringToEpoch(_, pattern)))
Took: 1216
scala> time(() => randomDates.map(dateTimeStringToEpochFixed))
Took: 732