1970년 이전 날짜 사용가능한 date, mktime
인터넷정보2007. 11. 19. 14:33
1970년 이전 날짜에대해서는 date와 mktime 으로 값을 구할수가 없기에 찾아봤더니..1902년 부터인가를 구하는 프로그램이 있더군요..
그래서 그냥 1년 부터 구하도록 만들었습니다.
근데 문제는. 1년부터 1582년 10월 14일 까지는.. 가상의 날짜입니다.
현재 사용되는 달력은 1582년 10월 15일부터 고정되었다고 하더군요..
함수는. new_date와 new_mktime 이며 사용법은 같습니다.
그리고 아직 미완성이기 때문에.. 주로 사용되는 포맷만 구현되어있습니다 ^^;;
거기에 하나더 미완성인게.. new_mktime 의 인자값으로 음수가 들어갈경우는 처리가 되어있지 않습니다.. 지금 작업할게 있어서요 ㅋ
아래 내용을 복사해서 라이브러리에 넣어두고 사용하시면됩니다.
버그나 수정사항은 직접고치셨다면 여기에 올려주시면 감사하겠습니다. (__)
(902년 부터 뽑아주는 함수를 조금 참고했습니다.)
<?
/*
+---------------------------------------------------------------------+
| Copyleft (L) 2005.1.9 by NiL |
+---------------------------------------------------------------------+
| 본 프로그램은 제작자와는 전혀 무관하게 맘대로 복사, 수정, 파손 |
| 또는, 대여, 판매할수 있습니다. |
| 수정된 소스는 제작자와 많은 사람들과 공유되기를 원합니다. |
+---------------------------------------------------------------------+
| Author: Park J. NiL <nils@jnils.net> |
+---------------------------------------------------------------------+
*/
function is_leaf_year($y) {
if(($y % 400) == 0) return true;
else if(($y % 100) == 0) return false;
else if(($y % 4) == 0) return true;
else return false;
}
function new_mktime($hour, $min, $sec, $month, $day, $year) {
$hour = intval($hour);
$min = intval($min);
$sec = intval($sec);
$month = intval($month);
$day = intval($day);
$year = intval($year);
$month_arr[0] = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
$month_arr[1] = array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
$_days = 0;
$_secs = 0;
$normal_year_days = 365;
$leaf_year_days = 366;
$_day_sec = 86400;
$_hour_sec = 3600;
$_min_sec = 60;
$_day_min = 1440;
$_hour_min = 60;
$_day_hour = 24;
$_timestamp = 0;
// 초 더하기
$secs = $sec;
// 분을 초로
$secs += $min * $_min_sec;
// 시를 초로
$secs += $hour * $_hour_sec;
// 날 더하기
$days = $day;
// 월을 날짜로
$_year_cnt = floor(($month - 1) / 12);
$month = $month % 12;
for($i = 0; $i < $month - 1; $i++)
{
$_month = ($i % 12) + 1;
$leaf_flg = 0; // 기본값으로 윤달 아님
if($_month == 2) // 2월이면 윤달 체크
{
if(is_leaf_year($year + $_year_cnt)) $leaf_flg = 1;
else $leaf_flg = 0;
}
$days += $month_arr[$leaf_flg][$i];
}
// 년을 날짜로
$year += $_year_cnt;
for($i = 1; $i < $year; $i++)
{
$_year = $i;
$days += is_leaf_year($_year) ? $leaf_year_days : $normal_year_days;
}
$_timestamp = ($days * $_day_sec) + $secs;
return $_timestamp;
}
function get_days(&$t)
{
$day_sec = 86400;
$days = floor($t / $day_sec);
$t = $t - (floor($t / $day_sec) * $day_sec);
return $days;
}
function get_date($d)
{
$leaf_year_days = 366;
$normal_year_days = 365;
$month_arr[0] = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
$month_arr[1] = array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
$year = 0;
$month = 0;
$day = 0;
$flg = true;
while($flg)
{
$year++;
if(is_leaf_year($year))
{
if($d > $leaf_year_days) $d -= $leaf_year_days;
else $flg = false;
$leaf_flg = 1;
}
else
{
if($d > $normal_year_days) $d -= $normal_year_days;
else $flg = false;
$leaf_flg = 0;
}
}
$month_cnt = 0;
while($d > $month_arr[$leaf_flg][$month_cnt])
{
$d -= $month_arr[$leaf_flg][$month_cnt];
$month_cnt++;
}
$month = $month_cnt + 1;
$day = $d;
return sprintf("%04d%02d%02d", $year, $month, $day);
}
function get_time($t)
{
$hour_sec = 3600;
$min_sec = 60;
$hour = floor($t / $hour_sec);
$min = floor(($t % $hour_sec) / $min_sec);
$sec = $t % $min_sec;
return sprintf("%02d%02d%02d", $hour, $min, $sec);
}
function cal_date($t)
{
if($t == "")
{
return date("YmdHis");
}
else
{
$days = get_days(&$t);
$date = get_date($days);
$time = get_time($t);
return $date.$time;
}
}
function new_date()
{
if(func_num_args() != 1 && func_num_args() != 2) return false;
$format = func_get_arg(0);
$timestamp = func_get_arg(1);
$date = cal_date($timestamp);
$year = substr($date, 0, 4);
$month = substr($date, 4, 2);
$day = substr($date, 6, 2);
$hour = substr($date, 8, 2);
$min = substr($date, 10, 2);
$sec = substr($date, 12, 2);
$out_buf = "";
for($i = 0; $i < strlen($format); $i++)
{
$c = substr($format, $i, 1);
switch ($c)
{
case "a":
$out_buf .= $hour < 12 ? "am" : "pm";
break;
case "A":
$out_buf .= $hour < 12 ? "AM" : "PM";
break;
case "B":
break;
case "c":
break;
case "d":
$out_buf .= sprintf("%02d", $day);
break;
case "D":
break;
case "F":
break;
case "g":
$out_buf .= sprintf("%d", (($hour - 1) % 12) + 1);
break;
case "G":
$out_buf .= sprintf("%d", $hour);
break;
case "h":
$out_buf .= sprintf("%02d", (($hour - 1) % 12) + 1);
break;
case "H":
$out_buf .= sprintf("%02d", $hour);
break;
case "i":
$out_buf .= sprintf("%02d", $min);
break;
case "I":
break;
case "j":
$out_buf .= sprintf("%d", $day);
break;
case "l":
break;
case "L":
break;
case "m":
$out_buf .= sprintf("%02d", $month);
break;
case "M":
break;
case "n":
$out_buf .= sprintf("%d", $month);
break;
case "O":
break;
case "r":
break;
case "s":
$out_buf .= sprintf("%02d", $sec);
break;
case "S":
break;
case "t":
break;
case "T":
break;
case "U":
break;
case "w":
break;
case "W":
break;
case "Y":
$out_buf .= sprintf("%04d", $year);
break;
case "y":
$out_buf .= substr(sprintf("%04d", $year), 2, 2);
break;
case "z":
break;
case "Z":
break;
default :
$out_buf .= $c;
}
}
return $out_buf;
}
?>
사용법 예제입니다.
[jnils@hosting1 typhoon]$ cat ./test.php
#!/usr/local/bin/php
<?
include \"lib.php\";
echo date(\"YmdHis\", mktime(71, 71, 71, 15, 445, 1999)).\"\\n\";
echo new_date(\"YmdHis\", new_mktime(71, 71, 71, 15, 445, 1999)).\"\\n\";
?>
[jnils@hosting1 typhoon]$ ./test.php
20010522001211
20010522001211
http://www.phpschool.com/bbs2/inc_view.html?id=11707&code=tnt2&start=0&mode=search&field=title&search_name=&operator=and&period=last1year&category_id=&s_que=19
그래서 그냥 1년 부터 구하도록 만들었습니다.
근데 문제는. 1년부터 1582년 10월 14일 까지는.. 가상의 날짜입니다.
현재 사용되는 달력은 1582년 10월 15일부터 고정되었다고 하더군요..
함수는. new_date와 new_mktime 이며 사용법은 같습니다.
그리고 아직 미완성이기 때문에.. 주로 사용되는 포맷만 구현되어있습니다 ^^;;
거기에 하나더 미완성인게.. new_mktime 의 인자값으로 음수가 들어갈경우는 처리가 되어있지 않습니다.. 지금 작업할게 있어서요 ㅋ
아래 내용을 복사해서 라이브러리에 넣어두고 사용하시면됩니다.
버그나 수정사항은 직접고치셨다면 여기에 올려주시면 감사하겠습니다. (__)
(902년 부터 뽑아주는 함수를 조금 참고했습니다.)
<?
/*
+---------------------------------------------------------------------+
| Copyleft (L) 2005.1.9 by NiL |
+---------------------------------------------------------------------+
| 본 프로그램은 제작자와는 전혀 무관하게 맘대로 복사, 수정, 파손 |
| 또는, 대여, 판매할수 있습니다. |
| 수정된 소스는 제작자와 많은 사람들과 공유되기를 원합니다. |
+---------------------------------------------------------------------+
| Author: Park J. NiL <nils@jnils.net> |
+---------------------------------------------------------------------+
*/
function is_leaf_year($y) {
if(($y % 400) == 0) return true;
else if(($y % 100) == 0) return false;
else if(($y % 4) == 0) return true;
else return false;
}
function new_mktime($hour, $min, $sec, $month, $day, $year) {
$hour = intval($hour);
$min = intval($min);
$sec = intval($sec);
$month = intval($month);
$day = intval($day);
$year = intval($year);
$month_arr[0] = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
$month_arr[1] = array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
$_days = 0;
$_secs = 0;
$normal_year_days = 365;
$leaf_year_days = 366;
$_day_sec = 86400;
$_hour_sec = 3600;
$_min_sec = 60;
$_day_min = 1440;
$_hour_min = 60;
$_day_hour = 24;
$_timestamp = 0;
// 초 더하기
$secs = $sec;
// 분을 초로
$secs += $min * $_min_sec;
// 시를 초로
$secs += $hour * $_hour_sec;
// 날 더하기
$days = $day;
// 월을 날짜로
$_year_cnt = floor(($month - 1) / 12);
$month = $month % 12;
for($i = 0; $i < $month - 1; $i++)
{
$_month = ($i % 12) + 1;
$leaf_flg = 0; // 기본값으로 윤달 아님
if($_month == 2) // 2월이면 윤달 체크
{
if(is_leaf_year($year + $_year_cnt)) $leaf_flg = 1;
else $leaf_flg = 0;
}
$days += $month_arr[$leaf_flg][$i];
}
// 년을 날짜로
$year += $_year_cnt;
for($i = 1; $i < $year; $i++)
{
$_year = $i;
$days += is_leaf_year($_year) ? $leaf_year_days : $normal_year_days;
}
$_timestamp = ($days * $_day_sec) + $secs;
return $_timestamp;
}
function get_days(&$t)
{
$day_sec = 86400;
$days = floor($t / $day_sec);
$t = $t - (floor($t / $day_sec) * $day_sec);
return $days;
}
function get_date($d)
{
$leaf_year_days = 366;
$normal_year_days = 365;
$month_arr[0] = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
$month_arr[1] = array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
$year = 0;
$month = 0;
$day = 0;
$flg = true;
while($flg)
{
$year++;
if(is_leaf_year($year))
{
if($d > $leaf_year_days) $d -= $leaf_year_days;
else $flg = false;
$leaf_flg = 1;
}
else
{
if($d > $normal_year_days) $d -= $normal_year_days;
else $flg = false;
$leaf_flg = 0;
}
}
$month_cnt = 0;
while($d > $month_arr[$leaf_flg][$month_cnt])
{
$d -= $month_arr[$leaf_flg][$month_cnt];
$month_cnt++;
}
$month = $month_cnt + 1;
$day = $d;
return sprintf("%04d%02d%02d", $year, $month, $day);
}
function get_time($t)
{
$hour_sec = 3600;
$min_sec = 60;
$hour = floor($t / $hour_sec);
$min = floor(($t % $hour_sec) / $min_sec);
$sec = $t % $min_sec;
return sprintf("%02d%02d%02d", $hour, $min, $sec);
}
function cal_date($t)
{
if($t == "")
{
return date("YmdHis");
}
else
{
$days = get_days(&$t);
$date = get_date($days);
$time = get_time($t);
return $date.$time;
}
}
function new_date()
{
if(func_num_args() != 1 && func_num_args() != 2) return false;
$format = func_get_arg(0);
$timestamp = func_get_arg(1);
$date = cal_date($timestamp);
$year = substr($date, 0, 4);
$month = substr($date, 4, 2);
$day = substr($date, 6, 2);
$hour = substr($date, 8, 2);
$min = substr($date, 10, 2);
$sec = substr($date, 12, 2);
$out_buf = "";
for($i = 0; $i < strlen($format); $i++)
{
$c = substr($format, $i, 1);
switch ($c)
{
case "a":
$out_buf .= $hour < 12 ? "am" : "pm";
break;
case "A":
$out_buf .= $hour < 12 ? "AM" : "PM";
break;
case "B":
break;
case "c":
break;
case "d":
$out_buf .= sprintf("%02d", $day);
break;
case "D":
break;
case "F":
break;
case "g":
$out_buf .= sprintf("%d", (($hour - 1) % 12) + 1);
break;
case "G":
$out_buf .= sprintf("%d", $hour);
break;
case "h":
$out_buf .= sprintf("%02d", (($hour - 1) % 12) + 1);
break;
case "H":
$out_buf .= sprintf("%02d", $hour);
break;
case "i":
$out_buf .= sprintf("%02d", $min);
break;
case "I":
break;
case "j":
$out_buf .= sprintf("%d", $day);
break;
case "l":
break;
case "L":
break;
case "m":
$out_buf .= sprintf("%02d", $month);
break;
case "M":
break;
case "n":
$out_buf .= sprintf("%d", $month);
break;
case "O":
break;
case "r":
break;
case "s":
$out_buf .= sprintf("%02d", $sec);
break;
case "S":
break;
case "t":
break;
case "T":
break;
case "U":
break;
case "w":
break;
case "W":
break;
case "Y":
$out_buf .= sprintf("%04d", $year);
break;
case "y":
$out_buf .= substr(sprintf("%04d", $year), 2, 2);
break;
case "z":
break;
case "Z":
break;
default :
$out_buf .= $c;
}
}
return $out_buf;
}
?>
사용법 예제입니다.
[jnils@hosting1 typhoon]$ cat ./test.php
#!/usr/local/bin/php
<?
include \"lib.php\";
echo date(\"YmdHis\", mktime(71, 71, 71, 15, 445, 1999)).\"\\n\";
echo new_date(\"YmdHis\", new_mktime(71, 71, 71, 15, 445, 1999)).\"\\n\";
?>
[jnils@hosting1 typhoon]$ ./test.php
20010522001211
20010522001211
http://www.phpschool.com/bbs2/inc_view.html?id=11707&code=tnt2&start=0&mode=search&field=title&search_name=&operator=and&period=last1year&category_id=&s_que=19
'인터넷정보' 카테고리의 다른 글
EMBED사용법 (0) | 2007.11.20 |
---|---|
Windows XP 블루스크린 오류목록 총정리 (0) | 2007.11.20 |
브라우저 오류표시 - 종류와 의미 (0) | 2007.11.20 |
예쁜 스위시 소스모음 (0) | 2007.11.20 |
check_agent - 사용자의 os및 브라우저이름 확인 (0) | 2007.11.20 |
ASP DateAdd 함수를 이용한 방법 :: 날짜 함수, 계산하기 (0) | 2007.11.19 |
PHP 에서 날짜 함수, 계산하기 (0) | 2007.11.19 |
PC 컴퓨터에서 사용하는 용량과 속도의 단위사 모두 정리 (0) | 2007.11.15 |
컨디셔널 커맨트 사용하기 - CSS IE, FF 구분 & JS (0) | 2007.11.14 |
김제동 어록을 홈페이지에 뿌려준다 - 랜덤 메세지,메시지 (0) | 2007.11.13 |
PHP 에서 날짜 함수, 계산하기
인터넷정보2007. 11. 19. 14:25
php 에서의 날짜관련함수 및 계산방법입니다.
출력.
mktime(시,분,초,월,일,년) 유닉스 타임(타임스탬프:1970년을기준으로부터 1초단위숫자)으로 값을 출력합니다.
타임스탬프를 날짜형식으로 볼수 있는 함수가 date 입니다.
http://man.phpschool.com/manual/kr/function.date.phpdate : 함수레퍼런스
date는 날짜가 들어가지 않으면 기본적으로 오늘을 뜻합니다.
date("Y-m-d") ==> 오늘 날짜
mktime 으로 얻은 값을 date 함수로 특정 형식으로 출력
date("Y-m-d", mktime(0, 0, 0, 12, 32, 1997)); ==> 1998-01-01
출력의 할때 편리한 점은 1월32일은 2월1 일로 나온다는 것입니다.
그럼 2005년 1월부터 100일 지난 날은 몇일일까요?
응용 date("Y-m-d", mktime(0, 0, 0, 0 , 1, 101, 2005)); ==> 2005년 04월 11일
(1월1일은 포함하면 안되겠죠? 그래서 하루 더 증가~)
출력의 기본입니다.
계산.
기본연산은 strtotime("각종연산") 으로 합니다.
타임스탬프를 리턴합니다.
이말은 date 형으로 출력할 수 있다는 말입니다. ^^
http://man.phpschool.com/manual/kr/function.strtotime.php" :strtotime 함수레퍼런스
strtotime 은 날짜가 들어가지 않으면 기본적으로 오늘을 뜻합니다.
그리고 이 함수 또한 일수가 넘어가면 다음달로 계산됩니다.
strtotime("+3 day") => 오늘에서 3일 후, 물론 달이 넘어가면 1일로 계산됨
이 함수를 개인적으로 좋아하는 이유가 mktime 을 사용할 필요가 없다는 점입니다.
(필요가 있을 경우를 찾아주세요. ㅡ_-+)
date("Y년 m월 d일 h:m:s",mktime(12,12,1,1,2,2005))
date("Y년 m월 d일 h:m:s",strtotime("2005-01-02 12:12:01"))
이 두 함수는 같은 2005년 01월 02일 12:01:01 을 나타냅니다.
물론 사용하기도 strtotime 이 훨씬 쉽습니다.
그럼 2005년 1월부터 100일 지난 날은 몇일인지 strtotime 을 이용해서 확인해봅시다.
응용 date("Y-m-d", strtotime("2005-01-01 +100 day")); ==> 2005년 04월 11일
위에서
+100 day 는 +2 month 나 +10 year 와 같이 특정 연산이 가능합니다.
그래서 더욱 멋지게 보입니다. ㅡ_-+
두날짜의 연산은 타임스탬프로 두날짜의 차이값을 얻어서 86400 (60초*60분*24시) 로 나누면 몇일인지 나옵니다.
intval((strtotime("2005-01-10")-strtotime("2005-01-02"))/86400) => 8
이만하면 PHP 에서 웬만한 날짜 계산을 하실 수 있습니다.
참고용.
PHP의 경우는 strtotime 함수로 해결
http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=38930
ASP의 경우는 DateAdd 함수를 이용한 방법
http://www.taeyo.pe.kr/lecture/2_beginner_hwang/4_2.htm
MySQL 은 [본문]과 내용에 대한 메뉴얼..
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html
MsSQL 도 ASP와 마찬가지로 DateAdd 로 처리가능
http://msdn2.microsoft.com/en-us/library/aa258863(SQL.80).aspx
출력.
mktime(시,분,초,월,일,년) 유닉스 타임(타임스탬프:1970년을기준으로부터 1초단위숫자)으로 값을 출력합니다.
타임스탬프를 날짜형식으로 볼수 있는 함수가 date 입니다.
http://man.phpschool.com/manual/kr/function.date.phpdate : 함수레퍼런스
date는 날짜가 들어가지 않으면 기본적으로 오늘을 뜻합니다.
date("Y-m-d") ==> 오늘 날짜
mktime 으로 얻은 값을 date 함수로 특정 형식으로 출력
date("Y-m-d", mktime(0, 0, 0, 12, 32, 1997)); ==> 1998-01-01
출력의 할때 편리한 점은 1월32일은 2월1 일로 나온다는 것입니다.
그럼 2005년 1월부터 100일 지난 날은 몇일일까요?
응용 date("Y-m-d", mktime(0, 0, 0, 0 , 1, 101, 2005)); ==> 2005년 04월 11일
(1월1일은 포함하면 안되겠죠? 그래서 하루 더 증가~)
출력의 기본입니다.
계산.
기본연산은 strtotime("각종연산") 으로 합니다.
타임스탬프를 리턴합니다.
이말은 date 형으로 출력할 수 있다는 말입니다. ^^
http://man.phpschool.com/manual/kr/function.strtotime.php" :strtotime 함수레퍼런스
strtotime 은 날짜가 들어가지 않으면 기본적으로 오늘을 뜻합니다.
그리고 이 함수 또한 일수가 넘어가면 다음달로 계산됩니다.
strtotime("+3 day") => 오늘에서 3일 후, 물론 달이 넘어가면 1일로 계산됨
이 함수를 개인적으로 좋아하는 이유가 mktime 을 사용할 필요가 없다는 점입니다.
(필요가 있을 경우를 찾아주세요. ㅡ_-+)
date("Y년 m월 d일 h:m:s",mktime(12,12,1,1,2,2005))
date("Y년 m월 d일 h:m:s",strtotime("2005-01-02 12:12:01"))
이 두 함수는 같은 2005년 01월 02일 12:01:01 을 나타냅니다.
물론 사용하기도 strtotime 이 훨씬 쉽습니다.
그럼 2005년 1월부터 100일 지난 날은 몇일인지 strtotime 을 이용해서 확인해봅시다.
응용 date("Y-m-d", strtotime("2005-01-01 +100 day")); ==> 2005년 04월 11일
위에서
+100 day 는 +2 month 나 +10 year 와 같이 특정 연산이 가능합니다.
그래서 더욱 멋지게 보입니다. ㅡ_-+
두날짜의 연산은 타임스탬프로 두날짜의 차이값을 얻어서 86400 (60초*60분*24시) 로 나누면 몇일인지 나옵니다.
intval((strtotime("2005-01-10")-strtotime("2005-01-02"))/86400) => 8
이만하면 PHP 에서 웬만한 날짜 계산을 하실 수 있습니다.
참고용.
PHP의 경우는 strtotime 함수로 해결
http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=38930
ASP의 경우는 DateAdd 함수를 이용한 방법
http://www.taeyo.pe.kr/lecture/2_beginner_hwang/4_2.htm
MySQL 은 [본문]과 내용에 대한 메뉴얼..
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html
MsSQL 도 ASP와 마찬가지로 DateAdd 로 처리가능
http://msdn2.microsoft.com/en-us/library/aa258863(SQL.80).aspx
'인터넷정보' 카테고리의 다른 글
브라우저 오류표시 - 종류와 의미 (0) | 2007.11.20 |
---|---|
예쁜 스위시 소스모음 (0) | 2007.11.20 |
check_agent - 사용자의 os및 브라우저이름 확인 (0) | 2007.11.20 |
1970년 이전 날짜 사용가능한 date, mktime (0) | 2007.11.19 |
ASP DateAdd 함수를 이용한 방법 :: 날짜 함수, 계산하기 (0) | 2007.11.19 |
PC 컴퓨터에서 사용하는 용량과 속도의 단위사 모두 정리 (0) | 2007.11.15 |
컨디셔널 커맨트 사용하기 - CSS IE, FF 구분 & JS (0) | 2007.11.14 |
김제동 어록을 홈페이지에 뿌려준다 - 랜덤 메세지,메시지 (0) | 2007.11.13 |
한글을 이미지로 변환하기 - GD로 한글쓰기::이미지 그리기 (0) | 2007.11.07 |
[JS] 자바스크립트 브라우저/OS/레퍼러 (0) | 2007.10.30 |
유닉스 타임스탬프 값을 GMT 시간으로 바꾸어 보자 - 현재 시간으로..
인터넷정보2007. 10. 18. 14:19
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> Jasko Sample Script </TITLE>
<META NAME="Author" CONTENT="JASKO">
<META NAME="Keywords" CONTENT="javascript, 자바스크립트, 자바">
<META NAME="Description" CONTENT="자바스크립트 소스뱅크 - 자스코">
<!---- [1단계] 아래의 소스코드를 <HEAD>와 </HEAD> 사이에 붙여 넣으세요 ---->
<SCRIPT LANGUAGE="JavaScript">
<!--
function Calculate()
{
if(document.form1.switcher.value == "=>")
timeToHuman();
else if(document.form1.switcher.value == "<=")
humanToTime();
}
function timeToHuman()
{
var theDate = new Date(document.form1.timeStamp.value * 1000);
dateString = theDate.toGMTString();
arrDateStr = dateString.split(" ");
document.form1.inMon.value = getMonthNum(arrDateStr[2]);
document.form1.inDay.value = arrDateStr[1];
document.form1.inYear.value = arrDateStr[3];
document.form1.inHr.value = arrDateStr[4].substr(0,2);
document.form1.inMin.value = arrDateStr[4].substr(3,2);
document.form1.inSec.value = arrDateStr[4].substr(6,2);
}
function humanToTime()
{
var humDate = new Date(date.utc(document.form1.inYear.value,
(stripLeadingZeroes(document.form1.inMon.value)-1),
stripLeadingZeroes(document.form1.inDay.value),
stripLeadingZeroes(document.form1.inHr.value),
stripLeadingZeroes(document.form1.inMin.value),
stripLeadingZeroes(document.form1.inSec.value)));
document.form1.timeStamp.value = (humDate.getTime()/1000.0);
}
function pointRight()
{
document.form1.switcher.value="=>";
}
function pointLeft()
{
document.form1.switcher.value="<=";
}
function stripLeadingZeroes(input)
{
if((input.length > 1) && (input.substr(0,1) == "0"))
return input.substr(1);
else
return input;
}
function getMonthNum(abbMonth)
{
var arrMon = new Array("Jan","Feb","Mar","Apr","May","Jun",
"Jul","Aug","Sep","Oct","Nov","Dec");
for(i=0; i<arrMon.length; i++)
{
if(abbMonth == arrMon[i])
return i+1;
}
}
// -->
</script>
<!------------------------- 여기까지 ---------------------------------->
</HEAD>
<BODY>
<!---- [2단계] 아래의 코드를 <BODY> 태그와 </BODY> 태그안에 붙여 넣으세요 ---->
<form name=form1>
<table border=0>
<tr>
<th>유닉스 타임스탬프 값 (초) :</th>
<td valign=bottom rowspan=2>
<input type=button name=switcher value="변환하기" onClick="Calculate();"></td>
<th>년:</th>
<th> </th>
<th>월:</th>
<th> </th>
<th>일:</th>
<th> </th>
<th>시:</th>
<th> </th>
<th>분:</th>
<th> </th>
<th>초:</th>
<th> </th>
</tr>
<tr>
<td align=center><input type=text size=20 maxlength=11 name=timeStamp onKeyUp="pointRight();"></td>
<td><input type=text size=4 maxlength=4 name=inYear onKeyUp="pointLeft();"></td>
<th>/</th>
<td><input type=text size=4 maxlength=2 name=inMon onKeyUp="pointLeft();"></td>
<th>/</th>
<td><input type=text size=4 maxlength=2 name=inDay onKeyUp="pointLeft();"></td>
<th> </th>
<td><input type=text size=4 maxlength=2 name=inHr onKeyUp="pointLeft();"></td>
<th>:</th>
<td><input type=text size=4 maxlength=2 name=inMin onKeyUp="pointLeft();"></td>
<th>:</th>
<td><input type=text size=4 maxlength=2 name=inSec onKeyUp="pointLeft();"></td>
<th>GMT</th>
</tr>
</table>
</form>
<!------------------------- 여기까지 ---------------------------------->
</BODY>
</HTML>
http://oxtag.com/php/p/timestamp_change.php
<HTML>
<HEAD>
<TITLE> Jasko Sample Script </TITLE>
<META NAME="Author" CONTENT="JASKO">
<META NAME="Keywords" CONTENT="javascript, 자바스크립트, 자바">
<META NAME="Description" CONTENT="자바스크립트 소스뱅크 - 자스코">
<!---- [1단계] 아래의 소스코드를 <HEAD>와 </HEAD> 사이에 붙여 넣으세요 ---->
<SCRIPT LANGUAGE="JavaScript">
<!--
function Calculate()
{
if(document.form1.switcher.value == "=>")
timeToHuman();
else if(document.form1.switcher.value == "<=")
humanToTime();
}
function timeToHuman()
{
var theDate = new Date(document.form1.timeStamp.value * 1000);
dateString = theDate.toGMTString();
arrDateStr = dateString.split(" ");
document.form1.inMon.value = getMonthNum(arrDateStr[2]);
document.form1.inDay.value = arrDateStr[1];
document.form1.inYear.value = arrDateStr[3];
document.form1.inHr.value = arrDateStr[4].substr(0,2);
document.form1.inMin.value = arrDateStr[4].substr(3,2);
document.form1.inSec.value = arrDateStr[4].substr(6,2);
}
function humanToTime()
{
var humDate = new Date(date.utc(document.form1.inYear.value,
(stripLeadingZeroes(document.form1.inMon.value)-1),
stripLeadingZeroes(document.form1.inDay.value),
stripLeadingZeroes(document.form1.inHr.value),
stripLeadingZeroes(document.form1.inMin.value),
stripLeadingZeroes(document.form1.inSec.value)));
document.form1.timeStamp.value = (humDate.getTime()/1000.0);
}
function pointRight()
{
document.form1.switcher.value="=>";
}
function pointLeft()
{
document.form1.switcher.value="<=";
}
function stripLeadingZeroes(input)
{
if((input.length > 1) && (input.substr(0,1) == "0"))
return input.substr(1);
else
return input;
}
function getMonthNum(abbMonth)
{
var arrMon = new Array("Jan","Feb","Mar","Apr","May","Jun",
"Jul","Aug","Sep","Oct","Nov","Dec");
for(i=0; i<arrMon.length; i++)
{
if(abbMonth == arrMon[i])
return i+1;
}
}
// -->
</script>
<!------------------------- 여기까지 ---------------------------------->
</HEAD>
<BODY>
<!---- [2단계] 아래의 코드를 <BODY> 태그와 </BODY> 태그안에 붙여 넣으세요 ---->
<form name=form1>
<table border=0>
<tr>
<th>유닉스 타임스탬프 값 (초) :</th>
<td valign=bottom rowspan=2>
<input type=button name=switcher value="변환하기" onClick="Calculate();"></td>
<th>년:</th>
<th> </th>
<th>월:</th>
<th> </th>
<th>일:</th>
<th> </th>
<th>시:</th>
<th> </th>
<th>분:</th>
<th> </th>
<th>초:</th>
<th> </th>
</tr>
<tr>
<td align=center><input type=text size=20 maxlength=11 name=timeStamp onKeyUp="pointRight();"></td>
<td><input type=text size=4 maxlength=4 name=inYear onKeyUp="pointLeft();"></td>
<th>/</th>
<td><input type=text size=4 maxlength=2 name=inMon onKeyUp="pointLeft();"></td>
<th>/</th>
<td><input type=text size=4 maxlength=2 name=inDay onKeyUp="pointLeft();"></td>
<th> </th>
<td><input type=text size=4 maxlength=2 name=inHr onKeyUp="pointLeft();"></td>
<th>:</th>
<td><input type=text size=4 maxlength=2 name=inMin onKeyUp="pointLeft();"></td>
<th>:</th>
<td><input type=text size=4 maxlength=2 name=inSec onKeyUp="pointLeft();"></td>
<th>GMT</th>
</tr>
</table>
</form>
<!------------------------- 여기까지 ---------------------------------->
</BODY>
</HTML>
http://oxtag.com/php/p/timestamp_change.php
'인터넷정보' 카테고리의 다른 글
외국인 주민번호 체크 함수 (0) | 2007.10.18 |
---|---|
이미지 파일 사이즈 구하기 (0) | 2007.10.18 |
TEXTAREA 폼에서 탭키 입력하는 법 (0) | 2007.10.18 |
여러 이미지 스크롤 (0) | 2007.10.18 |
포트리스 게임 (0) | 2007.10.18 |
Windows 원하는 시간에 자동 종료하기 - 타이머 (0) | 2007.10.18 |
웹 개발자들이 알아야 할 윈도우 XP SP2 변경점(팝업,액티브X) (0) | 2007.10.18 |
타이핑 되는 툴팁 (0) | 2007.10.18 |
유니코드, 아스키코드 (0) | 2007.10.18 |
첫번째 체크박스에서 두번째 체크박스를 제어하는 스크립트 (0) | 2007.10.18 |
timestamp 를 date 형식으로 보여주기(as like php date())
인터넷정보2007. 10. 13. 15:48
timestamp 로 받은 값을 원하는 date형식으로 보여주는 겁니다.
아주 간단하므로, 원하시는대로 살을붙여서 사용하시면 됩니다.
샘플로 월을 영어로 표기하도록 해봤습니다.
소스코드
var DateFormatter = {
month : ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],
parse : function(timestamp, format) {
var timestamp = parseInt(timestamp);
if(timestamp < 10000000000) timestamp *= 1000;
_date = new Date();
_date.setTime(timestamp);
var year = _date.getFullYear();
var month = this.month[_date.getMonth()];
var day = _date.getDate();
var hour = _date.getHours();
var min = _date.getMinutes();
var sec = _date.getSeconds();
if(format){
format = format.replace(/y/i, year);
format = format.replace(/m/i, month);
format = format.replace(/d/i, day);
format = format.replace(/h/i, hour);
format = format.replace(/i/i, min);
format = format.replace(/s/i, sec);
return format;
}
else{
return day + " " + month + " " + year;
}
}
};
month : ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],
parse : function(timestamp, format) {
var timestamp = parseInt(timestamp);
if(timestamp < 10000000000) timestamp *= 1000;
_date = new Date();
_date.setTime(timestamp);
var year = _date.getFullYear();
var month = this.month[_date.getMonth()];
var day = _date.getDate();
var hour = _date.getHours();
var min = _date.getMinutes();
var sec = _date.getSeconds();
if(format){
format = format.replace(/y/i, year);
format = format.replace(/m/i, month);
format = format.replace(/d/i, day);
format = format.replace(/h/i, hour);
format = format.replace(/i/i, min);
format = format.replace(/s/i, sec);
return format;
}
else{
return day + " " + month + " " + year;
}
}
};
사용예제
var timestamp = new Date().getTime();
alert(DateFormatter.parse(timestamp));
alert(DateFormatter.parse(timestamp, 'd m y h:i:s'));
alert(DateFormatter.parse(timestamp));
alert(DateFormatter.parse(timestamp, 'd m y h:i:s'));
JS : http://oxtag.com/zboard/zboard.php?id=js&no=741
'인터넷정보' 카테고리의 다른 글
PHP의 sleep()과 비슷한 함수 (0) | 2007.10.13 |
---|---|
날짜 시작일~종료일 출력 (0) | 2007.10.13 |
배경 이미지 랜덤으로.. (0) | 2007.10.13 |
스타일을 이용한 양끝맞추기 (0) | 2007.10.13 |
JS 체크 (0) | 2007.10.13 |
네비게이터 객체 (0) | 2007.10.13 |
아크로벳리더가 7 이상 설치되어 있는지 버전 체크 (0) | 2007.10.13 |
자바스크립트로 이메일 형식 체크하기 (0) | 2007.10.13 |
프레임 내에서 F5 누르면 현재화면 그대로 새로고침되기 (0) | 2007.10.13 |
팝업차단 체킹 스크립트 (0) | 2007.10.13 |