반응형
지난주부터 기상청 API 사용하여 날씨 앱 만들기를 진행하고 있어요.
진행 하던 중 기상청 API를 사용하여 날씨를 구하기 위해서는 base_time을 넘겨야 하는데
react-native 에서 사용할 수 있는 라이브러리 중 moment.js 를 활용하면 간편하게 코드를 짤 수 있어서 공유하려고 합니다.
var baseDate = todayDate;
var baseTime = "0200";
// 기상청 정보는 1일 총 8번 업데이트 된다.(0200, 0500, 0800, 1100, 1400, 1700, 2000, 2300)
// moment(currentTime).isBetween("1200", "0210") :
// 1200 <= currentTime < 0210 : 1200은 포함되고 (true) 0210은 포함되지 않음(flase)
if (moment(currentTime).isBetween("1200", "0211")) {
// 0시~2시 10분 사이 : base_date가 어제 날짜로 바뀌어야 한다.
baseDate = yesterdayDate;
baseTime = "2300";
} else if (moment(currentTime).isBetween("0211", "0511")) {
// 2시 11분~5시 10분 사이
baseTime = "0200";
} else if (moment(currentTime).isBetween("0511", "0811")) {
// 5시 11분~8시 10분 사이
baseTime = "0500";
} else if (moment(currentTime).isBetween("0811", "1111")) {
// 8시 11분~11시 10분 사이
baseTime = "0800";
} else if (moment(currentTime).isBetween("1111", "1411")) {
// 11시 11분~14시 10분 사이
baseTime = "1100";
} else if (moment(currentTime).isBetween("1411", "1711")) {
// 14시 11분~17시 10분 사이
baseTime = "1400";
} else if (moment(currentTime).isBetween("1711", "2011")) {
// 17시 11분~20시 10분 사이
baseTime = "1700";
} else if (moment(currentTime).isBetween("2011", "2311")) {
// 20시 11분~23시 10분 사이
baseTime = "2000";
} else {
// 23시 11분~23시 59분
baseTime = "2300";
}
코드 해석
위 코드의 주석에도 적어 놓았지만, 기상청 날씨 데이터 정보는 하루에 8번 업데이트 됩니다.
그 시간은 0200, 0500, 0800, 1100, 1400, 1700, 2000, 2300 이렇게 새벽 두시에 시작해서 세시간 간격으로 됩니다.
코드를 살펴보면
moment(currentTime).isBetween("1200", "0211")
위 코드는 12시부터 2시10분까지가 해당됩니다.
즉, 1200 <= currentTime < 0210 과 의미가 같습니다.
12시 ~ 2시10분 까지는 아직 오늘의 데이터가 나오기 전인 시간이에요. 그래서 전날의 23시 데이터가 가장 최신의 데이터인 것이죠.
그래서 코드는
if (moment(currentTime).isBetween("1200", "0211")) {
// 0시~2시 10분 사이 : base_date가 어제 날짜로 바뀌어야 한다.
baseDate = yesterdayDate;
baseTime = "2300";
}
baseDate 변수에 yesterdayDate (어제 날짜)를 넣어주고,
baseTime 변수에는 "2300"을 넣어주는 것입니다.
더 추가적인 정보가 궁금하시면 댓글 남겨주세요 :)
이상 기상청 API 사용하여 날씨 앱 만들기 중 [base_time] 값 구하기 코드 설명이었습니다.
반응형
최근댓글