[자바 스크립트] 엑스플랫폼에서 시간 관련 함수 구현 (시차는 어떻게 구현할까?)
엑스플랫폼으로 PC의 시간을 보여달라는 요청을 처리해 준 후 년/월/일/시/분/초를 자바 스크립트로 구현하는 방법을 정리해 보았다.
/*******************************************************************************
★ 설명
해당 PC의 오늘 날짜 + 시간을 가져온다.
★ parameter
★ return
- 성공 = yyyyMMddhhmiss형태의 오늘 날짜 ( 예 : "20121122223010" )
- 실패 = 없음
******************************************************************************/
function TodayTime()
{
var strToday = "";
var objDate = new Date();
var sToday = objDate.getFullYear().toString();
sToday += Right("0" + (objDate.getMonth() + 1), 2);
sToday += Right("0" + objDate.getDate(), 2);
sToday += Right("0" + objDate.getHours(), 2);
sToday += Right("0" + objDate.getMinutes(), 2);
sToday += Right("0" + objDate.getSeconds(), 2);
//strToday += objDate.getMilliseconds();
return sToday;
}
/*******************************************************************************
★ 설명
문자열의 오른쪽에서 nSize만큼의 문자열을 가져온다.
★ Parameter
1. sOrg : 원래 문자열( 예 : "aaBBbbcc" )
2. nSize : 가져올문자열 길이 ( 예 : 2 )
★ return
- 성공 = 오른쪽에서 nSize만큼의 문자열 ( 예 : "cc" )
- 실패 = ""
★ 주의사항
sOrg의 길이가 nSize보다 작은경우는 sOrg가 Return된다.
( 예 : sOrg="a", nSize=2 ==> return = "a" )
******************************************************************************/
function Right(sOrg, nSize)
{
if( IsNull(sOrg) || IsNull(nSize) ) return "";
if( sOrg.length < nSize )
return sOrg;
else
return sOrg.substr(sOrg.length-nSize, nSize);
}
////////////////////////////////////////////////////////////////////////////////
// String & Number Start
////////////////////////////////////////////////////////////////////////////////
/*******************************************************************************
★ 설명
입력값이 null에 해당하는 경우 모두를 한번에 체크한다.
★ Parameter
1. sValue : 체크할 문자열( 예 : null 또는 undefined 또는 "" 또는 "abc" )
★ return
- sValue가 undefined, null, NaN, "", Array.length = 0인 경우 = true
- 이외의 경우 = false
******************************************************************************/
function IsNull(sValue)
{
if( new String(sValue).valueOf() == "undefined")
return true;
if( sValue == null )
return true;
if( ("x"+sValue == "xNaN") && ( new String(sValue.length).valueOf() == "undefined" ) )
return true;
if( sValue.length == 0 )
return true;
return false;
}
// 시계처리 함수
function Clock()
{
date_str = TodayTime();
yy = date_str.substr(0,4); //년
mm = date_str.substr(4,2); //월
dd = date_str.substr(6,2); //요일
hh = date_str.substr(8,2); //시간
mi = date_str.substr(10,2); //분
ss = date_str.substr(12,2); //초
return hh + " : " + mi + " : " + ss;
}
function comp_timer_ontimer(obj:Form, e:TimerEventInfo)
{
Static_clock.text = Clock(); //한국 시간
}
요렇게 추가해 놓으면 일단 작업은 끝!!
그리고 중요한 부분은 엑스플랫폼의 Source 부분을 열어서 밑에 빨간부분처럼 수정해주어야 한다.
<Form id="work" classname="main" inheritanceid="" position="absolute 0 0 1012 617" titletext="Work Frame" scrollbars="none" onload="work_onload" onsize="work_onsize" ontimer="comp_timer_ontimer" visible="true" style="background:darkgray;">
마지막으로 화면이 실행되자마자 실행되게 하기위해 onload 부분에
Static_clock.text = Clock(); // 시계표시용 Static Component에 시간표시
this.setTimer(1,1000); // Timer구동 <= 타이머를 1초간격으로 설정해주면 위에 ontimer에 설정되어있는 함수를 호출해준다. 그럼 실제 시간이 초당 흘러가는 효과를 나타낼 수 있다!
한국 시간은 이렇게 구해왔는데... 워싱턴의 시간과 베이징의 시간도 표현하고 싶어서~~
function Clock() {
var arg = arguments;
var time = new Date();
if(arg[1])
time.setHours(time.getHours()+arg[1]);
var yy = time.getFullYear();
var mm = time.getMonth() + 1;
var dd = time.getDate();
var minute = time.getMinutes();
var second = time.getSeconds();
var hour = time.getHours();
if(hour<=12) {
if(hour<10) hour = "AM 0" + hour;
else hour = "AM " + hour;
}
else hour = "PM " + (hour-12);
if(mm<10) mm = "0" + mm;
if(dd<10) dd = "0" + dd;
if(minute<10) minute = "0" + minute;
if(second<10) second = "0" + second;
return yy +"년 "+ mm +"월 "+ dd +"일 "+ hour +":"+ minute +":"+ second;
}
요렇게 만들면 모든 나라의 날짜와 시차를 구할 수 있다.
호출 할때는 clock('usa',-14) 요렇게 호출하면 미국과 14시간 차이남으로 미국의 현재 시간을 불러올 수 있다. clock('bejing',1) 요렇게 하면 베이징과의 시차가 1시간 이니까 베이징의 현재시간을 나타낼 수 있다.
'프로그램 > 엑스플랫폼' 카테고리의 다른 글
[엑스플랫폼 패스워드] 패스워드 관련 표시 기능 (0) | 2016.11.30 |
---|---|
[엑스플랫폼 TextArea] 스크롤바를 최상단, 최하단으로 보내는 방법 (0) | 2016.11.30 |
[엑스플랫폼 그리드] 소계의 합을 구하는 방법. (0) | 2016.11.30 |
[엑스플랫폼 그리드] 텍스트에 대문자만 입력하고 싶을때 (0) | 2016.11.30 |