PHP를 사용하여 어제의 날짜를 얻는 방법?


92

PHP에서 특정 날짜 형식을 사용하여 어제 날짜를 얻고 싶습니다.

$today = date("d.m.Y"); //15.04.2013

가능합니까?

월과 년을 각각 변경해야하는지 고려하십시오.


1
date ( "dmy", time ()-60 * 60 * 24);
NINCOMPOOP 2013

내 솔루션을 사용해 보셨습니까? 이뿐만 아니라 변화하는 달 작동합니다
파비오

저 위의 사용자 이름 "멍청한 놈"이 :)의 코멘트에 좋은 의미를 추가하는 완벽한 순간
STT LCU

답변:


266

거기 당신은 간다

date('d.m.Y',strtotime("-1 days"));

이것은 월이 변경되는 경우에도 작동합니다


작은 꼼꼼한 선택 : 해당 시간이 DST 변경에 걸치면 자정에 거의 문제가 발생합니다. 명시 적으로 정오를 넘으면 도움이됩니다.
Deduplicator

1
틀 렸습니다 . DST에 대한 3 가지 사항 : 1 서버 시간에 따라 다르지만 서버에 올바른 시간대가 있으면 내 기능에 영향을주지 않습니다. 2 전 세계가 DST의 영향을받지 않고 사용하지 않는 곳이 있습니다. 3 대부분의 장소는 하루의 첫 시간 (예 : 오전 2시 또는 3시)에 시간을 변경하는 데 사용하므로 변경되는 날에 영향을주지 않습니다.
Fabio

1
1. 그 함수는 하루가 24 시간이 아닐 수 있음을 알고주의를 기울이는가? 2. 고장난 시계도 하루에 두 번씩 맞습니다. 3. 도난 / 중복 된 정확한 시간은 계산에 그다지 중요하지 않습니다.
Deduplicator

1
아무 의미 일 하루되지 않은 다른 24보다 전까지 DST 변경 시간과 서버가이 물론 시간에 따라 2를 변경하지만, 당신의 아이디어가 될 수있는이 매우 중요 대신하지 지점 3의 우측 자정에 시간을 변경하는 경우, 다른 시간에
Fabio 2014

7

당신은 이것을 할 수 있습니다

date("F j, Y", time() - 60 * 60 * 24);

또는

date("F j, Y", strtotime("yesterday"));

3
일광 절약 보증 할 수 없습니다 ... 정말 날짜 시간을 사용해야합니다 사람들은 요즘 객체
마크 베이커

UTC 시간으로 작동하면 정상적으로 작동합니다. date_default_timezone_set ( 'UTC');
Patrick

7

1 단계

date () 함수에 형식 데이터를 설정해야합니다. date () 함수는 주어진 정수 타임 스탬프 또는 타임 스탬프가 제공되지 않은 경우 현재 시간을 사용하여 주어진 형식 문자열에 따라 형식화 된 문자열을 반환합니다. 즉, 타임 스탬프는 선택 사항이며 기본값은 time () 값입니다.

<?php
echo date("F j, Y");
?>

결과 : 2010 년 3 월 30 일

2 단계

"어제"날짜의 경우 php 함수 mktime ()을 사용합니다. 함수 mktime ()은 주어진 인수에 해당하는 Unix 타임 스탬프를 반환합니다. 이 타임 스탬프는 Unix Epoch (1970 년 1 월 1 일 00:00:00 GMT)와 지정된 시간 사이의 초 수를 포함하는 긴 정수입니다. 인수는 오른쪽에서 왼쪽으로 생략 될 수 있습니다. 따라서 생략 된 인수는 localdate 및 시간에 따라 현재 값으로 설정됩니다.

<?php
echo mktime(0, 0, 0, date("m"), date("d")-1, date("Y"));
?>

결과 : 1269820800

3 단계

이제 모두 병합하고 다음을보십시오.

<?php
$yesterday = date("Y-m-d", mktime(0, 0, 0, date("m") , date("d")-1,date("Y")));
echo $yesterday;
?>

결과 : 2010 년 3 월 29 일

유사하게 작동하여 시간을 되 돌리는 것이 가능합니다.

<?php
$yesterday = date("H:i:s",mktime(date("H"), 0, 0, date("m"),date("d"), date("Y")));
echo $yesterday;
?>

결과 : 20:00:00

또는 7 일 전 :

<?php
$week = date("Y-m-d",mktime(0, 0, 0, date("m"), date("d")-7,date("Y")));
echo $week;
?>

결과 : 2010-03-23


7

이 시도

        $tz    = new DateTimeZone('Your Time Zone');
        $date  = new DateTime($today,$tz);
        $interval = new DateInterval('P1D');
        $date->sub($interval); 

        echo $date->format('d.m.y');

        ?>           

php.net/manual/en/book.datetime.php를 참조하십시오 '.. 이것은 월 변경에도 작동합니다
alwaysLearn

9
new DateTime ( 'yesterday')
Virgili Garcia

$ yesterday = new DateTime ( 'yesterday', new DateTimeZone ( 'Your Time Zone'));
miralong

이 코드 전용 답변에 대한 약간의 설명이 좋을 것입니다.
mickmackusa


4

PHP 앱에서 시간대 를 정의하는 경우 (필요한대로) 다음과 같이 할 수 있습니다.

date_default_timezone_set('Europe/Paris');

다음과 같이 간단합니다.

$yesterday = new DateTime('yesterday'); // will use our default timezone, Paris
echo $yesterday->format('Y-m-d'); // or whatever format you want

(기본 시간대를 저장하기 위해 상수 또는 환경 변수를 정의 할 수 있습니다.)


2

이 시도

<?php
$yesterday = date(“d.m.Y”, time()-86400);
echo $yesterday;

3
일광 절약으로 인해 하루에 86400 초가 항상있는 것은 아닙니다! 따라서이 계산은 1 년에 두 번 잘못 될 수 있습니다!
sbrbot

... 윤초 때문에.
Sebastian Mach

1

정확한 시간을 설정하는 DateTime의 또 다른 OOP 방법 :

$yesterday = new DateTime("yesterday 09:00:59", new DateTimeZone('Europe/London'));
echo $yesterday->format('Y-m-d H:i:s') . "\n";

0

Carbon 라이브러리를 사용하여이 작업을 수행 할 수도 있습니다.

Carbon::yesterday()->format('d.m.Y');         // '26.03.2019'

다른 형식 :

Carbon::yesterday()->toDateString();          // '2019-03-26'
Carbon::yesterday()->toDateTimeString();      // '2019-03-26 00:00:00'

Carbon::yesterday()->toFormattedDateString(); // 'Mar 26, 2019'
Carbon::yesterday()->toDayDateTimeString();   // 'Tue, Mar 26, 2019 12:00 AM'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.