DateTime 클래스 unix timestamp 사용하여 날짜 출력하기
DateTime 상속받아 나름대로 만들어 사용할 수 있는 객체를 만들어 테스트 하였습니다.
간단하게 unixtime stamp 현재 날짜는 time() 함수를 사용하면 됩니다.
특정 날짜를 unix timestamp 로 변환하기 위해선 strtotime() 함수를 사용하면 되는데 객체 형태로 사용하기 위해선 아래와 같이 합니다.
class MyDateTime extends DateTime {
}
$oDate = new MyDateTime();
$uxTime = $oDate->getTimestamp();
$ymd = $oDate->format('Y-m-d H:i:s');
echo date('Y-m-d H:i:s') . ' 결과: ' . $ymd . "<br>";
echo date('Y-m-d H:i:s') . ' 결과: ' . $uxTime . "<br>";
// 리턴값이 객체이기 때문에 이렇게 사용 한다.
$oDate2 = $oDate->setTimestamp(123);
$ymd = $oDate2->format('Y-m-d H:i:s');
echo date('Y-m-d H:i:s') . ' 결과: ' . $ymd . "<br>";
절차형으로 간단하게 할 수 있는것을 변화되는 방식으로 표현해 보았습니다.
// 객체 생성
$d = new DateTime();
// 현재 날짜
echo '현재 날짜: ' . $d->format('Y-m-d'). "\n";
// 날짜를 지정
$d->setDate(2022, 2, 3);
echo '지정된 날짜: ' . $d->format('Y-m-d'). "\n";
echo '---------------------------' . PHP_EOL;
$ts = 1983458399; /* 2013-11-03 01:59:59 in Eastern Saving Time */
$ts = time();
// 타임존 설정
$dst = new DateTime('now', new DateTimeZone('Asia/Seoul'));
// $dst = new DateTime('now', new DateTimeZone('Europe/Amsterdam'));
echo '지정된 unixTimeStamp 날짜: ' . $dst->format('Y-m-d H:i:s'). "\n";
$oDate = $dst->setDate(2022,2,2);
$oDate = $dst->setTime(11, 11, 11, 0);
echo '출력: ' . $oDate->format('Y-m-d H:i:s') . "\n";
// 아래는 static가 아니라서 안되는 것이다. 아래를 보게 된다.
// PHP Fatal error: Uncaught Error: Non-static method DateTime::setDate() cannot be called statically
// $oDate = DateTime::setDate(2022,11,11);
위에서 여러줄로 처리 된것은 리턴타입이 DateTime 이기 때문에 아래와 같이 사용이 가능하다
$oDate = new DateTime('now', new DateTimeZone('Asia/Seoul'));
echo '날짜 출력: ' . $oDate->setDate(2023,1,28)->setTime(11,12,13,0)->format('Y-m-d H:i:s') . PHP_EOL;
● 타임존 관된것
https://www.php.net/manual/en/timezones.php
https://www.php.net/manual/en/timezones.asia.php
https://www.php.net/manual/en/datetime.createfromformat.php
● 같이 보면 좋은글
strtotime -1 month 사용 기준점이 필요한 이유 > PHP