[FLEX] 날짜 차이 계산하기, MySQL datetime 이용하기, Date.parse(String)

 

Flex 날짜 계산하기

진행중인 프로젝트를 위해 Flex에서 날짜형식에 대한 처리를 알아보고 있는데 마땅한 예제 찾기가 쉽지 않아서 Adobe livedocs를 봤더니 Date.parse()라는 쓸만한 함수가 있어서 설명해보고자 한다.

var strOneday:String = PtxGrid.selectedItem.res_time as String;
var milliseconds:Number = Date.parse(strOneday);
var oneday:Date = new Date(milliseconds);

간단히 설명하자면

MM/DD/YYYY HH:MM:SS TZD
HH:MM:SS TZD Day Mon/DD/YYYY
Mon DD YYYY HH:MM:SS TZD
Day Mon DD HH:MM:SS TZD YYYY
Day DD Mon HH:MM:SS TZD YYYY
Mon/DD/YYYY HH:MM:SS TZD
YYYY/MM/DD HH:MM:SS TZD

이런 형식의 String을 밀리세컨드로 바꿔주는 기능이다.

즉 MySQL datetime 형식인 2007-01-26 12:25:30 이 형식을 이용할 수 있다는 의미다.
하지만 설명에 보면 “-” 문자는 인식하지 않는다고 한다. 즉
우리는 ‘-‘ 문자를 ‘/’ 로 바꿔주면 된다는 이야기

아래와 같이 XML을 뿌려주는 php 부분을 바꿔주면 된다.

while($mb = mysql_fetch_assoc($members))
{
	$i = 0;
	echo "\n";
	echo "\t<list>\n";
	while(list($key,$val) = each($mb))
	{
		$type  = mysql_field_type($members, $i);
		if($type=='datetime')$val = strtr($val,'-','/');
		echo "\t\t<{$key}>$val</{$key}>\n";
		$i++;
	}
	echo "\t</list>";
}

데이터 타입이 datetime인지 확인해서 -를 /로 바꿔주는 부분을 추가 그럼 아래와 같이 출력되고

<?xml version="1.0" encoding="UTF-8" ?>
<lists>
	<list>
		<res_id>1</res_id>
		<ptx_login>junn279</ptx_login>
		<ptx_name>준</ptx_name>
		<res_status>예약</res_status>
		<mb_id>doctor1</mb_id>
		<mb_name>의사일번</mb_name>
		<res_time>2008/06/26 21:00:00</res_time>
		<res_duration>30</res_duration>
		<res_link></res_link>
	</list>
	<list>
		<res_id>2</res_id>
		<ptx_login>junn279</ptx_login>
		<ptx_name>준</ptx_name>
		<res_status>초진예약</res_status>
		<mb_id>doctor1</mb_id>
		<mb_name>의사일번</mb_name>
		<res_time>2008/06/27 21:00:00</res_time>
		<res_duration>30</res_duration>
		<res_link></res_link>
	</list>
	<list>
		<res_id>3</res_id>
		<ptx_login>junn279</ptx_login>
		<ptx_name>준</ptx_name>
		<res_status>초진예약</res_status>
		<mb_id>doctor1</mb_id>
		<mb_name>의사일번</mb_name>
		<res_time>2008/06/29 21:00:00</res_time>
		<res_duration>30</res_duration>
		<res_link></res_link>
	</list>
</lists>

 

<?xml version="1.0" encoding="UTF-8" ?>
<lists>
	<list>
		<res_id>1</res_id>
		<ptx_login>junn279</ptx_login>
		<ptx_name>준</ptx_name>
		<res_status>예약</res_status>
		<mb_id>doctor1</mb_id>
		<mb_name>의사일번</mb_name>
		<res_time>2008/06/26 21:00:00</res_time>
		<res_duration>30</res_duration>
		<res_link></res_link>
	</list>
	<list>
		<res_id>2</res_id>
		<ptx_login>junn279</ptx_login>
		<ptx_name>준</ptx_name>
		<res_status>초진예약</res_status>
		<mb_id>doctor1</mb_id>
		<mb_name>의사일번</mb_name>
		<res_time>2008/06/27 21:00:00</res_time>
		<res_duration>30</res_duration>
		<res_link></res_link>
	</list>
	<list>
		<res_id>3</res_id>
		<ptx_login>junn279</ptx_login>
		<ptx_name>준</ptx_name>
		<res_status>초진예약</res_status>
		<mb_id>doctor1</mb_id>
		<mb_name>의사일번</mb_name>
		<res_time>2008/06/29 21:00:00</res_time>
		<res_duration>30</res_duration>
		<res_link></res_link>
	</list>
</lists>

이것을 Flex에서 연결시켜주면 아래와 같이 보이게 된다.

사용자 삽입 이미지
이번엔 오늘 날짜를 구하는 부분을 추가한 소스

var today:Date = new Date();
var strOneday:String = PtxGrid.selectedItem.res_time as String;
var milliseconds:Number = Date.parse(strOneday);
var oneday:Date = new Date(milliseconds);
if(milliseconds - today.getTime() >= 0)
{
	Alert.show("예약됨",(milliseconds - today.getTime()).toString());
}
if(milliseconds - today.getTime() < 0)
{
	Alert.show("지나감",(milliseconds - today.getTime()).toString());
}

이 소스를 마우스 클릭과 연결해주면 오늘 날짜보다 이전의 날짜가 기록된 행을 클릭히면 다음과 같이 뜬다.

참고로 getTime()한 이후 값의 차이는 밀리세컨드로 나누기 1000을 하면 세컨드,
나누기 60을 하면 분, 나누가 60을 또 하면 시간이 되니
총 몇시간 차이를 구하는 것은 노가다로 해주면 될듯.

사용자 삽입 이미지

0 Shares:
2 comments
    1. 글에도 썼다시피 혼자서 엉망진창으로 만든 코드여서요-_-; 도움이 되었다면 다행이네요ㅋ

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.