Programing

PHP의 NOW () 함수

lottogame 2020. 2. 16. 19:15
반응형

PHP의 NOW () 함수


MySQL 함수와 동일한 형식으로 날짜와 시간을 반환하는 PHP 함수가 NOW()있습니까?

을 사용하여 수행하는 방법을 알고 date()있지만이 기능 만 있는지 묻고 있습니다.

예를 들어,

2009-12-01 00:00:00

이외 :

date("Y-m-d H:i:s");

date('Y-m-d H:i:s')

자세한 내용은 여기를 참조하십시오 : http://pl.php.net/manual/en/function.date.php


PHP 버전> = 5.4로 DateTime 은 다음을 수행 할 수 있습니다.

echo (new \DateTime())->format('Y-m-d H:i:s');

작동 참조하십시오 .


이 기능을 사용하십시오 :

function getDatetimeNow() {
    $tz_object = new DateTimeZone('Brazil/East');
    //date_default_timezone_set('Brazil/East');

    $datetime = new DateTime();
    $datetime->setTimezone($tz_object);
    return $datetime->format('Y\-m\-d\ h:i:s');
}

이 시도:

date("Y-m-d H:i:s");

짧은 답변

$now = date_create()->format('Y-m-d H:i:s');

긴 답변을 보려면 아래를 읽으십시오.




PHP에서 MySQL NOW () 함수의 흉내

다음은 PHP에서 MySQL NOW()기능 을 모방 한 방법 목록입니다 .

$now = date_create('now')->format('Y-m-d H:i:s'); // works in php 5.2 and higher  
$now = date_create()->format('Y-m-d H:i:s'); // also works in php 5.2
$now = new DateTime('now')->format('Y-m-d H:i:s'); // syntax error!!!
$now = (new DateTime('now'))->format('Y-m-d H:i:s'); // works in php 5.4 and higher   
$now = date('Y-m-d H:i:s'); // works as well, but it's less nice then date_create()

date_create()->format('Y-m-d H:i:s')이 방법을 사용하면 시간대 / 시간대 조작을보다 쉽게 ​​처리 할 수 date('Y-m-d H:i:s')있으며 PHP 5.2부터 작동 하기 때문에 이것이 가장 좋은 방법 이라고 생각합니다 .


MySQL NOW () 함수

MySQL 함수 NOW()는 dateTime 값을 다음 형식으로 제공합니다 'YYYY-MM-DD HH:MM:SS'. https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_now를 참조하십시오 .

흥미로운 사실은이 쿼리를 실행하여 날짜 / 시간 형식을 얻을 SHOW VARIABLES LIKE 'd%e_format'수 있다는 것입니다. 결과는 다음과 같습니다.

Variable_name     Value     
date_format       %Y-%m-%d
datetime_format   %Y-%m-%d %H:%i:%

여기의 변수는 읽기 전용 변수입니다. 따라서 변경할 수 없습니다.

MySQL NOW()함수는 datetime_format변수 에서 형식을 가져 오는 것 같습니다 .


date_create ()-> format () VS 날짜 ()

유리한 사실은 다음 date_create('now')->format('Y-m-d H:i:s')date('Y-m-d H:i:s')같습니다.

  • 시간 조작을보다 쉽게 ​​처리
  • 시간대를보다 쉽게 ​​처리
  • 더 죄송합니다

시간 조작을보다 쉽게 ​​처리

date_create()상대적인 날짜 / 시간 형식 수락 (등 now, yesterday또는 +1 day참조) 이 링크를 , 예 :

$tomorrow = date_create('+1 day')->format('Y-m-d H:i:s'); 

date() 다음과 같이 상대 날짜 / 시간 형식도 허용합니다.

$tomorrow = date('Y-m-d H:i:s', strtotime('+1 day'));
$tomorrow = date('Y-m-d H:i:s', (time() + 86400)); // 86400 seconds = 1 day

시간대를보다 쉽게 ​​처리

시간대가 중요한 경우 지시어에 구성된 기본 시간대를 사용 하기 때문에 사용법이 date_create()->format()훨씬 더 합리적 입니다. 링크 : http://php.net/manual/en/datetime.configuration.php#ini.date.timezone .date()date()php.inidate.timezone

런타임 중에 시간대를 변경할 수 있습니다. 예:

date_default_timezone_set('Asia/Tokyo');.

그 단점은 모든 날짜 / 시간 기능에 영향을 미친다는 것입니다. date_create()->format()와 함께 사용하는 경우이 문제가 존재하지 않습니다 timezone_open().

PHP는 주요 시간대를 지원합니다. 재미있는 것은 북극권과 남극 대륙을 지원한다는 것입니다. 당신은 들어 본 적이 Longyearbyen있습니까? 그렇지 않다면 걱정하지 마십시오. 공식 PHP 문서를 읽을 때까지 나도 마찬가지였습니다.

$nowLongyearbyen = date_create('now', timezone_open('Arctic/Longyearbyen'))->format('Y-m-d H:i:s');

: 지원되는 모든 시간대의 목록을 참조하십시오 http://php.net/manual/en/timezones.php을 .

더 죄송합니다

OOP는 상태 전체 객체를 사용합니다. 그래서 나는 이런 식으로 생각하는 것을 선호합니다 :

// Create a DateTime Object. 
// Use the DateTime that applies for tomorrow.
// Give me the datetime in format 'Y-m-d H:i:s'
$tomorrow = date_create('+1 day')->format('Y-m-d H:i:s'); 

그런 다음 이렇게 생각하십시오.

// Give me a date time string in format 'Y-m-d H:i:s', 
// use strtotime() to calculate the Unix timestamp that applies for tomorrow.
$tomorrow = date('Y-m-d H:i:s', strtotime('+1 day'));

그러므로 나는 그 date_create()->format()접근법이 나에게 더 읽기 쉽다고 말할 것이다 date().


date_create ()-> format ()의 예

배열을 채워야하는 경우 프로젝트에이 방법을 사용합니다. 이처럼 :

$array = array(
    'name' => 'John',
    'date_time' => date_create('now')->format('Y-m-d H:i:s'), // uses the default timezone
    'date_time_japan' => date_create('now', timezone_open('Asia/Tokyo'))->format('Y-m-d H:i:s'),
);

나는 같은 대답을 찾고 있었고 PHP 5.3 이상에 대한이 솔루션을 생각해 냈습니다 .

$dtz = new DateTimeZone("Europe/Madrid"); //Your timezone
$now = new DateTime(date("Y-m-d"), $dtz);
echo $now->format("Y-m-d H:i:s");

MySQL 함수 NOW()는 현재 타임 스탬프를 반환합니다. PHP에서 찾은 유일한 방법은 다음 코드를 사용하는 것입니다.

$curr_timestamp = date('Y-m-d H:i:s');

사용 strftime:

strftime("%F %T");
  • %F와 동일합니다 %Y-%m-%d.

  • %T와 동일합니다 %H:%M:%S.

여기 데모 ideone에가.


사용하기 쉬운 답변 하나 더 :

echo date('c');

// 2015-07-27T00:00:00+02:00

이다 (PHP 5에서 추가) ISO 8601 날짜 MySQL을 사용하는

편집하다

MySQL 5.7은 기본적으로 datetime의 시간대를 허용하지 않습니다. 로 오류를 비활성화 할 수 있습니다 SQL_MODE=ALLOW_INVALID_DATES. 자세한 내용은 https://stackoverflow.com/a/35944059/2103434 에서 답변을 참조 하십시오 . 그러나 이는 데이터베이스에 저장할 때 시간대가 손실된다는 것을 의미합니다!

기본적으로 MySQL은 시스템 시간대를 사용 하며 PHP가 동일한 시간대사용 하는 한 괜찮습니다. 제 경우에는 CET / UTC + 2입니다.

2015-07-27T00:00:00+02:00, 데이터베이스에 삽입 하면 2015-07-27T00:00:00저장됩니다 (그러나 올바른 현지 시간입니다!).

PHP에 시간을 다시 넣으면

$importedDate = new \DateTime('2015-07-27T00:00:00')

+02:00표준 시간대이므로 시간대를 자동으로 가정합니다 . 이것을 인쇄하면 다시 맞습니다.

echo $importedDate->format('c');
// 2015-07-27T00:00:00+02:00

안전을 위해 항상 서버에서 UTC를 사용하고 MySQL 및 PHP로 UTC를 지정한 다음 날짜를 표시 할 때만 사용자의 로케일로 변환하십시오.

date_default_timezone_set('UTC');
$importedDate = new \DateTime('2015-07-27T00:00:00+02:00');
echo $importedDate->format('c');
// 2015-07-27T00:00:00+02:00

$importedDate->setTimezone(new \DateTimeZone("America/New_York"));
echo $importedDate->format('c');
// 2015-07-26T18:00:00-04:00

또는 DateTime상수 를 사용할 수 있습니다 .

echo date(DateTime::W3C); // 2005-08-15T15:52:01+00:00

그 목록은 다음과 같습니다.

ATOM = "Y-m-d\TH:i:sP" ;               // -> 2005-08-15T15:52:01+00:00
COOKIE = "l, d-M-Y H:i:s T" ;          // -> Monday, 15-Aug-2005 15:52:01 UTC
ISO8601 = "Y-m-d\TH:i:sO" ;            // -> 2005-08-15T15:52:01+0000
RFC822 = "D, d M y H:i:s O" ;          // -> Mon, 15 Aug 05 15:52:01 +0000
RFC850 = "l, d-M-y H:i:s T" ;          // -> Monday, 15-Aug-05 15:52:01 UTC
RFC1036 = "D, d M y H:i:s O" ;         // -> Mon, 15 Aug 05 15:52:01 +0000
RFC1123 = "D, d M Y H:i:s O" ;         // -> Mon, 15 Aug 2005 15:52:01 +0000
RFC2822 = "D, d M Y H:i:s O" ;         // -> Mon, 15 Aug 2005 15:52:01 +0000
RFC3339 = "Y-m-d\TH:i:sP" ;            // -> 2005-08-15T15:52:01+00:00 ( == ATOM)
RFC3339_EXTENDED = "Y-m-d\TH:i:s.vP" ; // -> 2005-08-15T15:52:01.000+00:00
RSS = "D, d M Y H:i:s O" ;             // -> Mon, 15 Aug 2005 15:52:01 +0000
W3C = "Y-m-d\TH:i:sP" ;                // -> 2005-08-15T15:52:01+00:00

디버깅을 위해 더 짧은 것을 선호합니다 ( 3v4l.org ).

echo date('ymd\THisP'); // 180614T120708+02:00

user1786647이 게시 한 솔루션이 마음에 들며 시간대를 함수 인수로 변경하고 반환 된 날짜 스탬프에 사용할 Unix 시간 또는 날짜 시간 문자열을 전달하는 선택적 지원을 추가하도록 약간 업데이트했습니다.

또한 PHP 5.3보다 낮은 버전을 실행하는 사용자의 경우 "setTimestamp"에 대한 대체가 포함되어 있습니다.

function DateStamp($strDateTime = null, $strTimeZone = "Europe/London") {
    $objTimeZone = new DateTimeZone($strTimeZone);

    $objDateTime = new DateTime();
    $objDateTime->setTimezone($objTimeZone);

    if (!empty($strDateTime)) {
        $fltUnixTime = (is_string($strDateTime)) ? strtotime($strDateTime) : $strDateTime;

        if (method_exists($objDateTime, "setTimestamp")) {
            $objDateTime->setTimestamp($fltUnixTime);
        }
        else {
            $arrDate = getdate($fltUnixTime);
            $objDateTime->setDate($arrDate['year'], $arrDate['mon'], $arrDate['mday']);
            $objDateTime->setTime($arrDate['hours'], $arrDate['minutes'], $arrDate['seconds']);
        }
    }
    return $objDateTime->format("Y-m-d H:i:s");
}

매개 변수로 올바른 형식의 PHP 날짜 함수를 사용할 수 있습니다.

echo date("Y-m-d H:i:s");

내장 PHP now()함수 는 없지만를 사용하여 수행 할 수 있습니다 date().

function now() {
    return date('Y-m-d H:i:s');
}

date_default_timezone_set()시간대를 변경해야하는 경우 사용할 수 있습니다 .

그렇지 않으면 Carbon 을 사용할 수 있습니다 -DateTime에 대한 간단한 PHP API 확장.


PHP는 time()다음 과 같습니다 . http://php.net/manual/en/function.time.php


simplePHP 클래스를 사용하여이를 수행 할 수 있습니다.

echo $date->now();

이 클래스는 날짜 추가, 빼기 및 비교에 유용한 여러 가지 방법도 제공합니다. 더 많은 예제 는 학습서 페이지확인할 수 있습니다 .

참고 URL : https://stackoverflow.com/questions/1995562/now-function-in-php



반응형