본문 바로가기
Kotlin/Exercise

10억초 더하기

by 봄석 2019. 3. 3.

10억초 더하기

지금 순간에서  10억초를 더한 시간은 언제일까요 ?


계산해보도록 하겠습니다 .


TestCode

class GigasecondTest {
 
    @Test
    fun modernTime() {
        val gigaSecond = Gigasecond(LocalDate.of(2011, Month.APRIL, 25))
 
        assertEquals(LocalDateTime.of(2043, Month.JANUARY, 114640), gigaSecond.date)
    }
 
    @Ignore
    @Test
    fun afterEpochTime() {
        val gigaSecond = Gigasecond(LocalDate.of(1977, Month.JUNE, 13))
 
        assertEquals(LocalDateTime.of(2009, Month.FEBRUARY, 1914640), gigaSecond.date)
    }
 
    @Ignore
    @Test
    fun beforeEpochTime() {
        val gigaSecond = Gigasecond(LocalDate.of(1959, Month.JULY, 19))
 
        assertEquals(LocalDateTime.of(1991, Month.MARCH, 2714640), gigaSecond.date)
    }
 
    @Ignore
    @Test
    fun withFullTimeSpecified() {
        val gigaSecond = Gigasecond(LocalDateTime.of(2015, Month.JANUARY, 242200))
 
        assertEquals(LocalDateTime.of(2046, Month.OCTOBER, 2234640), gigaSecond.date)
    }
 
    @Ignore
    @Test
    fun withFullTimeSpecifiedAndDayRollover() {
        val gigaSecond = Gigasecond(LocalDateTime.of(2015, Month.JANUARY, 24235959))
 
        assertEquals(LocalDateTime.of(2046, Month.OCTOBER, 314639), 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

댓글