Flash+actionScript 3.0으로 만든 양력/음력 상호 변환기.

입력칸에 날짜를 입력하고 바로 옆 Change 버튼을 누르거나 키보드의 엔터 키를 누르면 입력한 날짜를 양력으로 간주한 음력 날짜와 연,월,일 간지를 위 두칸의 출력창에 표시하고, 입력한 날짜를 음력으로 간주한 양력 날짜가 맨 아래 출력 창에 표시된다.
윤달인 음력 날짜의 양력 날짜를 알고싶은 경우에는 '윤달여부:' 옆 입력창에 y를 입력하면 된다.
단, 입력할 수 있는 날짜는 1881년 1월 30일~2050년 12월 29일 사이의 날짜만 가능하다.

작년쯤 웹 서핑 중 발견한 파이썬용 양/음력 변환 모듈(마치 난수표스러운 16진수 음력 관련 데이터들을 이용해 변환하는 방식)을 액션스크립트 용으로 바꿔 제작하려다 파이썬과 액션스크립트 실력 모두 부족하여 미뤄뒀던 것을 이제야 완성할 수 있었다.

14/3/9 일

14/3/11(화) 수정.
* 탭으로 년, 월, 일을 차례로 입력할 때 월 다음에 일로 넘어가지 않고 Change 버튼으로 넘어가는 버그 수정.
* 음력 입력 오류를 음력 출력창에 표시하도록 수정.
* 윤달여부를 체크하는 입력박스를 추가하고 음력일 경우 윤달 입력박스가 y이면 윤달로 검색하도록 수정.

* 데이트 객체 생성과 밀리초 단위로 변형하기
var myDate:Date=new Date(year,month-1,day);
//지정한 날짜로 데이트 객체 생성
var myDateMilSec=myDate.valueOf();
//생성된 데이트 객체를 밀리초 단위로 변형하기

* 파이썬에서는 16진수를 '\uA26B' 식으로 표현하고 액션스크립트에선 '0xA26B' 식으로 표현한다.
16진수 'A26B'는 10진수로 '41579'이다.

* 파이썬의 데이트 객체는 1년 1월 1일부터의 날수를 받아오고 플래시의 데이트 객체는 1971년 1월 1일부터의 밀리초를 받아오기에 변형이 필요했다.
플래시의 밀리초를 파이썬의 날 수로 변형시키기:
일단 플래시의 밀리초에 GMT 9시간 보정을 원래대로 되돌리고(+32400000: 9시간에 해당하는 밀리초), 밀리초를 날 수로 변형한 다음(/86400000: 24시간에 해당하는 밀리초로 나누기), 1년 1월 1일에서 1970년 1월 1일까지의 날 수(719163 일)를 더해줬다.
pyDay= ((asMilSec+32400000)/86400000) + 719163;
//액션스크립트의 1970/1/1 부터의 밀리초를 파이썬의 1/1/1부터의 날수로 변환
//32400000: GMT 9시간 보정 원래대로,
//86400000 = 24시간(하루)
//719163: 1년1월1일부터 1970년1월1일까지의 날 수

아래는 반대로 파이썬의 날 수를 플래시의 밀리초로 변형시키기:
asMilSec= (pyDay-719163)*86400000;
//파이썬의 1/1/1부터의 날 수를 액션스크립트의 1970/1/1 부터의 밀리초로 변환
//719163: 1년1월1일부터 1970년1월1일까지의 날 수, 86400000: 24시간(하루)

* 유니코드에서 문자를 반환하는 String.fromCharCode() 메서드를 알게되다.
ex) trace(String.fromCharCode(0xac11)); // 갑