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.ini
date.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
'Programing' 카테고리의 다른 글
int를 문자열로 변환 하시겠습니까? (0) | 2020.02.16 |
---|---|
App Transport Security 정책에 보안 연결을 사용해야하므로 리소스를로드 할 수 없습니다 (0) | 2020.02.16 |
일단 조각의 인스턴스 상태를 백 스택에 올바르게 저장하는 방법은 무엇입니까? (0) | 2020.02.16 |
range ()보다 항상 xrange ()를 선호해야합니까? (0) | 2020.02.16 |
VS2012에서 파일 미리보기 비활성화 (0) | 2020.02.16 |