=sol2lun("2014", "11", "11")
/** * 음력일자를 받아서 양력일자를 리턴하는 함수 (한국천문연구원 사이트를 이용) * 음력 10월 3일의 2013년 양력일자를 알고 싶은 경우 lun2sol(2013, 10, 3, 1) 으로 호출 * 응답으로는 '2013/11/05' 와 같이 스트링을 리턴. * yoon (윤달구분) : 1 - 평달, 2 - 윤달 */ function lun2sol(yyyy, mm, dd, yoon) { yyyy = parseInt(yyyy, 10); mm = parseInt(mm, 10); dd = parseInt(dd, 10);
if ((yyyy <= 1391) || (yyyy >= 2050)) { return "ERROR"; } if ((mm < 1) || (mm > 12)) { return "ERROR"; } if ((dd < 1) || (dd > 31)) { return "ERROR"; }
/* 이미 조회했던 일자이면 ScriptProperties 에서 읽어 온다. -- 네트웍을 통한 조회는 한번만 하도록 */ var prop = ScriptProperties.getProperty("lun2sol/" + yyyy + "/" + mm + "/" + dd + "/" + yoon); if (prop != null) { Logger.log("Read from db: " + prop); return prop; }
var payload = { "lun_year": String(yyyy), "lun_month": String(mm), "lun_day": String(dd), "yoon": String(yoon) }; var params = { "method": "post", "payload": payload }; var result = UrlFetchApp.fetch("http://astro.kasi.re.kr/Life/Knowledge/solar2lunar/convert_daily_l2s.php", params); var htmlstr = result.getContentText(); //Logger.log(htmlstr);
var pos = htmlstr.indexOf("td width=500"); //-- 천문연구원 사이트 변경되면 수정 필요 if (pos >= 0) { pos = pos + 13; var checkChar = htmlstr.substr(pos, 1); if ((checkChar >= "0") && (checkChar <= "9")) { ; } else { return "ERROR"; }
var new_prop = htmlstr.substr(pos, 4) + "/" + htmlstr.substr(pos + 7, 2) + "/" + htmlstr.substr(pos + 12, 2) ScriptProperties.setProperty("lun2sol/" + yyyy + "/" + mm + "/" + dd + "/" + yoon, new_prop);
return new_prop; } return "ERROR"; }
/** * 양력일자를 받아서 음력일자를 리턴하는 함수 (한국천문연구원 사이트를 이용) * 양력 2013년 1월 26일의 음력일자를 알고 싶은 경우 sol2lun(2013, 1, 26) 으로 호출 * 응답으로는 '2012/12/15 평달' 과 같이 스트링을 리턴. */ function sol2lun(yyyy, mm, dd) { yyyy = parseInt(yyyy, 10); mm = parseInt(mm, 10); dd = parseInt(dd, 10);
if ((yyyy <= 1391) || (yyyy >= 2050)) { return "ERROR"; } if ((mm < 1) || (mm > 12)) { return "ERROR"; } if ((dd < 1) || (dd > 31)) { return "ERROR"; }
/* 이미 조회했던 일자이면 ScriptProperties 에서 읽어 온다. -- 네트웍을 통한 조회는 한번만 하도록 */ var prop = ScriptProperties.getProperty("sol2lun/" + yyyy + "/" + mm + "/" + dd); if (prop != null) { Logger.log("Read from db: " + prop); return prop; }
var payload = { "sol_year": String(yyyy), "sol_month": String(mm), "sol_day": String(dd), }; var params = { "method": "post", "payload": payload }; var result = UrlFetchApp.fetch("http://astro.kasi.re.kr/Life/Knowledge/solar2lunar/convert_daily_s2l.php", params); var htmlstr = result.getContentText(); var yoonstr; var pos = htmlstr.indexOf("td width=500"); //-- 천문연구원 사이트 변경되면 수정 필요 if (pos >= 0) { pos = pos + 13; var checkChar = htmlstr.substr(pos, 1); if ((checkChar >= "0") && (checkChar <= "9")) { ; } else { return "ERROR"; }
if (htmlstr.indexOf("br>(") == -1) { //-- 천문연구원 사이트 변경되면 수정 필요 yoonstr = "평달"; } else { yoonstr = "윤달"; }
var new_prop = htmlstr.substr(pos, 4) + "/" + htmlstr.substr(pos + 7, 2) + "/" + htmlstr.substr(pos + 12, 2) + " " + yoonstr; ScriptProperties.setProperty("sol2lun/" + yyyy + "/" + mm + "/" + dd, new_prop);
return new_prop; } return "ERROR"; }
function test_lun2sol() { //Logger.log(lun2sol("2013", "10", "3", 1)); Logger.log(lun2sol(2013, 1, 4, 1)); }
function test_sol2lun() { Logger.log(sol2lun("2013", "1", "26")); } |