라벨이 Date인 게시물 표시

몽고디비 _id 값을 서버에서 내려주면 아이폰과 안드로이드에서 Date 변환하는 방법

보통 서버에서 서비스를 만들때 몽고디비를 많이 사용합니다. 이때 _id 는 날짜와 시간을 기반으로 생성됩니다. ObjectId("62b47ff00000000000000000") 몽고디비 쉘에서는 getTimestamp() 로 날짜와 시간을 가져올 수 있습니다. 서비스에서 ObjectId 방식으로 데이터를 내리고 모바일(아이폰 및 안드로이드)에서 날짜를 변환해서 사용하는 방법을 소개하고자 합니다. 먼저 아이폰에서 사용할 스위프트용 함수입니다. func ObjectIdToDate(id: String) -> Date {   var resultDate = Date()   let endIdx: String.Index = id.index(id.startIndex, offsetBy: 7)   let hex = id[id.startIndex...endIdx]   if let offset = UInt32(hex, radix: 16) {     resultDate = Date(timeIntervalSince1970: TimeInterval(offset))   }   return resultDate } 안드로이드에서 사용할 자바 메소드입니다. public Date ObjectIdToDate(String id) {   String hex = id.substring(0, 8);   Long x = Long.parseLong(hex, 16) * 1000;   return new Date(x); } 이런식으로 공통 함수를 만들어 사용하면 편합니다.

MongoDB ObjectId 에서 날짜 추출하는 방법(Swift & java)

 몽고디비의 ObjectId 에서 날짜를 추출하여 사용하는 방법이다. 아이폰을 위한 스위프트 함수로 작성하였다. func ObjectIdToDate(id: String ) -> Date {     var resultDate = Date ()     let endIdx: String . Index = id. index (id. startIndex , offsetBy: 7)     let hex = id[id. startIndex... endIdx]     if let offset = UInt32 (hex, radix: 16) {         resultDate = Date (timeIntervalSince1970: TimeInterval (offset))     }     return resultDate } 안드로이드를 위한 자바로 작성한 코드이다. public Date ObjectIdToDate (String id) { String hex = id.substring( 0 , 8 ) ; Long x = Long. parseLong (hex , 16 ) * 1000 ; return new Date(x) ; } 문자열 중 앞의 8자리가 유닉스 타임의 숫자이다. 서버에서 몽고디비의 _id 값을 Hex 코드로 내려 준다면 당황하지 말고 변환하여 사용하자. 앞의 4바이트가 시간이므로 이를 변환하면 된다. unix epoch 이란 1970.1.1 부터 지나온 시간을 말한다. 대부분 서버에서 이 시간을 사용한다.

[iPhone] Gregorian > Julian Date

+ ( float )solarToJulianCalendar:( int )Year setMonth:( int )Month setDay:( int )Day {     float JD, a, y, m;     a = floor ((( 14 - Month) / 12 ));     y = Year + 4800 - a;     m = Month + ( 12 * a) - 3 ;     JD = Day + floor ((( 153 * m) + 2 ) / 5 ) + ( 365 * y) + floor (y / 4 ) - floor (y / 100 ) + floor (y / 400 ) - 32045 ;          return JD; }

[Julian Date > gregorian] 줄리안 달력을 그레고리 달력으로 변환하기

출처 : http://www.tondering.dk/claus/cal/julperiod.php#formula a = JD + 32044 b = ((4 * a) + 3) / 146097 c = a - ((146097 * b) / 4) d = ((4 * c) + 3) / 1461 e = c - ((1461 * d) / 4) m = ((5 * e) + 2) / 153 day = e - (((153 * m) + 2) / 5) + 1 month = m + 3 - 12 * (m / 10) year = (100 * b) + d - 4800 + (m / 10) 위와 같이 하면 줄리안 데이트에서 년월일을 추출할 수 있습니다.

[Gregorian -> Julian Date]그레고리 달력을 줄리안 달력으로 변환하기

출처 : http://www.tondering.dk/claus/cal/julperiod.php#formula a = (14 - month) / 12 y = year + 4800 - a m = month + (12 * a) - 3 JD = day + (((153 * m) + 2) / 5) + (365 * y) + (y / 4) - (y / 100) + (y / 400) - 32045 위의 알고리즘을 사용하면 됩니다. 줄리안 달력은 BC 4713년 1월 1일부터 시작하는 달력입니다. 기준은 그리니치 천문대입니다. 한국은 +9 시입니다. 보통 날짜 계산 등에 많이 사용합니다.