107

我想在 php 中使用特定日期格式获取昨天的日期,格式如下:

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

可能吗?

如果应该分别更改它们,请考虑月份和年份。

4

12 回答 12

313

你去吧

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

如果月份更改,这也将起作用

于 2013-04-15T06:43:34.330 回答
12

尝试这个

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

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

        ?>           
于 2013-04-15T07:02:23.333 回答
11

PHP 中的昨天日期:

echo date("Y-m-d", strtotime("yesterday")); 
于 2019-12-04T05:18:51.857 回答
9

你可以这样做

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

或通过

date("F j, Y", strtotime("yesterday"));
于 2013-04-15T06:43:38.703 回答
8

步骤1

我们需要在函数 date() 中设置格式数据:函数 date() 返回一个根据给定格式字符串格式化的字符串,使用给定的整数时间戳或当前时间,如果没有给出时间戳。换句话说,timestamp 是可选的,默认为 time() 的值。

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

结果:2010 年 3 月 30 日

第2步

对于“昨天”日期,使用 php 函数 mktime():函数 mktime() 返回与给定参数对应的 Unix 时间戳。此时间戳是一个长整数,包含 Unix 纪元(1970 年 1 月 1 日 00:00:00 GMT)和指定时间之间的秒数。参数可以按从右到左的顺序省略;任何因此省略的参数都将根据本地日期和时间设置为当前值。

<?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

于 2013-04-15T06:54:49.843 回答
7

如果您在 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

(您可能需要定义一个常量或环境变量来存储您的默认时区。)

于 2020-04-23T14:54:47.123 回答
3

DateTime 的另一种 OOP 方法,可设置确切的时间:

$yesterday = new DateTime("yesterday 09:00:59", new DateTimeZone('Europe/London'));
echo $yesterday->format('Y-m-d H:i:s') . "\n";
于 2020-07-20T07:24:47.590 回答
2

尝试这个

<?php
$yesterday = date(“d.m.Y”, time()-86400);
echo $yesterday;
于 2013-04-15T06:50:07.030 回答
1

大多数答案都是程序/混合风格。这是纯 OOP 风格的解决方案:

$today = new DateTime();
$yesterday = $today->sub(new DateInterval("P1D"));
echo $yesterday->format("d.m.Y");

它还将处理夏令时和时区问题。简单的解决方案。

于 2021-08-04T02:56:38.320 回答
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'
于 2019-03-27T15:10:52.693 回答
0

创建一个函数

function getYesterday()
{
    return \Carbon\Carbon::yesterday()->format('Y-m-d');
}

调用函数

getYesterday();
于 2021-09-08T13:48:29.857 回答
0

我们可以使用 Fancy 方法。就像昨天这样。今天之前

$date = new DateTime; // example 2021-04-02
date_sub($date, date_interval_create_from_date_string('1 days')); 
$date = date_format($date, 'Y-m-d'); // Output will be 2021-04-01

或者我们可以通过这样的特定日期找到昨天。

$date = date_create('2021-04-06');
date_sub($date, date_interval_create_from_date_string('5 days'));
$date = date_format($date, 'Y-m-d'); // The output will be 2021-04-01
于 2021-04-13T06:31:02.783 回答