Wednesday, April 25, 2007
PHP, 스와치 시계의 인터넷 타임(Swatch Internet Time) 구하기
스와치 시간(Swatch Internet Time)이라는 것이 있습니다. 스위스의 시계 회사인 스와치(Swatch)사에서 만든 시간 체계입니다. 시간대 계산을 하지 않고, 세계 어디에서나 공통의 시간을 사용할 수 있게 하기 위해 만들었다고 합니다. (그러나 날짜 부분은 타임존을 적용해야 했습니다.)
시간대(타임존)가 없기에, 현재 유럽 시각이 @335 라면, 한국 시각과 미국 시각도 똑같이 @335 입니다.
현재 널리 사용되는 시간은 60진법 + 12진법으로 되어 있지만, 스와치 시간은 10진법입니다. 그래서 시간 계산에서 편리한 면이 있습니다.
하루(24시간)를, 000 ~ 999 까지, 1000 비트(Beats)로 구획지어 표현합니다. 즉, Milliday 입니다.
스와치 본사가 있는 스위스 비엘(Biel)이라는 도시를 기준점으로 하는데, 이것은 실은 "중앙 유럽 시간(UTC+1)"입니다. 즉, Central European Time 입니다. 그리고 서머 타임은 없습니다.
중앙 유럽의 오전0시는 000비트, 중앙 유럽의 정오는 500비트입니다. 한국 시간으로는 아침8시가 000비트입니다.
1 일 = 1000 비트
1 시간 = 41.666 비트
1 분 = 0.6944 비트
1 초 = 0.01157 비트
1비트(Beat; Swatch Beat)는 "1분 26.4초"에 즉 "86.4초"에 해당합니다. 비트보다 더 짧은 단위인 Centibeat (센티 비트) 는 0.864초 입니다. 그러나 스와치 시간은, 날짜 처리 부분과, 비트 이하 단위에 대한 공식적인 정의가 즉 Specification 이 없습니다.
앞에 골뱅이를 붙여서
@515
이런 식으로 표현합니다.
인터넷이나 실생활에서, 스와치 시간을 쓰는 곳을 본 적은 없습니다. 그렇지만 재미는 있더군요. 그리고 PHP 에서는 기본적으로 스와치 시간을 지원합니다.
date("B")
이렇게 하면 됩니다. 다음 예제와 같습니다.
파일명: example.php
실행 결과 화면:
한국의 아침 8시 26분경이 "@018" 이라는 스와치 시간으로 표시되었습니다.
날짜는 중앙 유럽 시간으로 표현되었기에,
d24.04.2007 @018
이렇게 하루 전으로 나옵니다.
▶▶ PHP 예제] 현재 날짜 시간, 년월일 시분초 출력 함수; Print Date Time
시간대(타임존)가 없기에, 현재 유럽 시각이 @335 라면, 한국 시각과 미국 시각도 똑같이 @335 입니다.
현재 널리 사용되는 시간은 60진법 + 12진법으로 되어 있지만, 스와치 시간은 10진법입니다. 그래서 시간 계산에서 편리한 면이 있습니다.
하루(24시간)를, 000 ~ 999 까지, 1000 비트(Beats)로 구획지어 표현합니다. 즉, Milliday 입니다.
스와치 본사가 있는 스위스 비엘(Biel)이라는 도시를 기준점으로 하는데, 이것은 실은 "중앙 유럽 시간(UTC+1)"입니다. 즉, Central European Time 입니다. 그리고 서머 타임은 없습니다.
중앙 유럽의 오전0시는 000비트, 중앙 유럽의 정오는 500비트입니다. 한국 시간으로는 아침8시가 000비트입니다.
1 일 = 1000 비트
1 시간 = 41.666 비트
1 분 = 0.6944 비트
1 초 = 0.01157 비트
1비트(Beat; Swatch Beat)는 "1분 26.4초"에 즉 "86.4초"에 해당합니다. 비트보다 더 짧은 단위인 Centibeat (센티 비트) 는 0.864초 입니다. 그러나 스와치 시간은, 날짜 처리 부분과, 비트 이하 단위에 대한 공식적인 정의가 즉 Specification 이 없습니다.
앞에 골뱅이를 붙여서
@515
이런 식으로 표현합니다.
인터넷이나 실생활에서, 스와치 시간을 쓰는 곳을 본 적은 없습니다. 그렇지만 재미는 있더군요. 그리고 PHP 에서는 기본적으로 스와치 시간을 지원합니다.
date("B")
이렇게 하면 됩니다. 다음 예제와 같습니다.
스와치 타임 구하기 함수
파일명: example.php
<html>
<head>
<title>PHP Example</title>
</head>
<body>
<?php
// 보통의 한국 시간 (24시간제)
echo date("Y-m-d H:i:s") . "<br />\n";
// 스와치 인터넷 타임 (Swatch Internet Time)
echo "@" . date("B") . "<br />\n";
// 000 ~ 999 까지
// 날짜까지 포함하여 스와치 인터넷 타임 출력
// 날짜에 대한 정의는 없지만,
// 날짜를 중앙유럽시간대로 변경하여 구하는 것이 보통입니다.
echo swatchTime() . "<br />\n";
// 스위스 시간대로 변경하여 날짜를 구한 후
// 다시 한국 시간대로 복귀하는 함수
function swatchTime() {
date_default_timezone_set("Etc/GMT+1");
$s = sprintf("d%s %s", date("d.m.Y"), date("@B"));
date_default_timezone_set("Asia/Seoul");
return $s;
}
?>
</body>
</html>
<head>
<title>PHP Example</title>
</head>
<body>
<?php
// 보통의 한국 시간 (24시간제)
echo date("Y-m-d H:i:s") . "<br />\n";
// 스와치 인터넷 타임 (Swatch Internet Time)
echo "@" . date("B") . "<br />\n";
// 000 ~ 999 까지
// 날짜까지 포함하여 스와치 인터넷 타임 출력
// 날짜에 대한 정의는 없지만,
// 날짜를 중앙유럽시간대로 변경하여 구하는 것이 보통입니다.
echo swatchTime() . "<br />\n";
// 스위스 시간대로 변경하여 날짜를 구한 후
// 다시 한국 시간대로 복귀하는 함수
function swatchTime() {
date_default_timezone_set("Etc/GMT+1");
$s = sprintf("d%s %s", date("d.m.Y"), date("@B"));
date_default_timezone_set("Asia/Seoul");
return $s;
}
?>
</body>
</html>
실행 결과 화면:
D:\Z>php example.php
<html>
<head>
<title>PHP Example</title>
</head>
<body>
2007-04-25 08:26:24<br />
@018<br />
d24.04.2007 @018<br />
</body>
</html>
D:\Z>
<html>
<head>
<title>PHP Example</title>
</head>
<body>
2007-04-25 08:26:24<br />
@018<br />
d24.04.2007 @018<br />
</body>
</html>
D:\Z>
한국의 아침 8시 26분경이 "@018" 이라는 스와치 시간으로 표시되었습니다.
날짜는 중앙 유럽 시간으로 표현되었기에,
d24.04.2007 @018
이렇게 하루 전으로 나옵니다.
▶▶ PHP 예제] 현재 날짜 시간, 년월일 시분초 출력 함수; Print Date Time
tag: php
PHP
<< Home