10억초 더하기
지금 순간에서 10억초를 더한 시간은 언제일까요 ?
계산해보도록 하겠습니다 .
TestCode
class GigasecondTest {
@Test
fun modernTime() {
val gigaSecond = Gigasecond(LocalDate.of(2011, Month.APRIL, 25))
assertEquals(LocalDateTime.of(2043, Month.JANUARY, 1, 1, 46, 40), gigaSecond.date)
}
@Ignore
@Test
fun afterEpochTime() {
val gigaSecond = Gigasecond(LocalDate.of(1977, Month.JUNE, 13))
assertEquals(LocalDateTime.of(2009, Month.FEBRUARY, 19, 1, 46, 40), gigaSecond.date)
}
@Ignore
@Test
fun beforeEpochTime() {
val gigaSecond = Gigasecond(LocalDate.of(1959, Month.JULY, 19))
assertEquals(LocalDateTime.of(1991, Month.MARCH, 27, 1, 46, 40), gigaSecond.date)
}
@Ignore
@Test
fun withFullTimeSpecified() {
val gigaSecond = Gigasecond(LocalDateTime.of(2015, Month.JANUARY, 24, 22, 0, 0))
assertEquals(LocalDateTime.of(2046, Month.OCTOBER, 2, 23, 46, 40), gigaSecond.date)
}
@Ignore
@Test
fun withFullTimeSpecifiedAndDayRollover() {
val gigaSecond = Gigasecond(LocalDateTime.of(2015, Month.JANUARY, 24, 23, 59, 59))
assertEquals(LocalDateTime.of(2046, Month.OCTOBER, 3, 1, 46, 39), gigaSecond.date)
}
}
LocalDate를 넣으면 10억초를 더한 LocalDateTime과 비교합니다
마찬가지로 LocalDateTime을 넣으면 10억초를 더한 LocalDateTime과 비교합니다.
해결안 1)
class Gigasecond(datetime: LocalDateTime) {
constructor(date: LocalDate) : this(date.atStartOfDay())
val date = datetime.plusSeconds(1_000_000_000.toLong()) // 1e9
}
1) 먼저 Gigasecond 클래스를 만들고 생성자를 두개 정의합니다 .
2) 기본 생성자는 LocalDateTime을 받고
3) 두번째 생성자는 두번째 생성자는 LocalDate를 date로 받고 , dateTime에 date.asStartOfDay() 스타드한 날짜를 전달합니다.
4) 그리고 변수 date에 plusSeconds 함수로 10억초를 더합니다
5) 1_000_000_000를 롱타입으로 변환하여 넣을수도 있고 , 1e9 처럼 지수스타일을 Long타입으로 변환하여 넣어줄 수도 있습니다.
'Kotlin > Exercise' 카테고리의 다른 글
스트링 뒤집기 (2) | 2019.03.13 |
---|---|
우주 시대 - 행나이를 주었을때, 나이를 초로 바꾸어보기 (2) | 2019.03.09 |
RNA를 DNA로 바꾸기 (4) | 2019.03.03 |
Twofer - 스트링 리턴하기 (2) | 2019.03.03 |
윤년 찾기 (4) | 2019.03.03 |
댓글