php now函数date,datetime - PHP中的NOW()函数

简短的回答

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

请阅读下面的长篇答案。

用PHP模仿

要模仿PHP中的MySQL date_create()->format()函数,你可以使用date()。这种方法可以让你更容易处理时间/时区操作date().它更具可读性,它可以在php 5.2之后运行。

$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()

之所以能正常工作是因为MySQL函数date_create()->format()以这种格式给出了dateTime值:date()。请看这里:[https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions的.html#function_now]一个有趣的事实是,通过运行此查询可以获得日期时间格式:date(),结果可能是这样的:

Variable_name Value

date_format %Y-%m-%d

datetime_format %Y-%m-%d %H:%i:%

这里的变量是只读变量。 所以你无法改变它。 我想MySQL date_create()->format()函数从date()变量获取它的格式。

date_create() - > format()VS date()

date_create()->format() over date()的有利事实是:

更容易处理时间操作

更容易处理时区

更多o.o.p.

更容易处理时间操作

date_create()->format()接受相对日期/时间格式(如date(),date()或php.ini)查看此链接,示例:

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

date_create()->format()也接受相对日期/时间格式,如下所示:

$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()的使用比date()更有意义,因为date()使用在php.ini指令php.ini中配置的默认时区。 (链接:[http://php.net/manual/en/datetime.configuration.php#ini.date.timezone)。]可以更改时区,例如: date_default_timezone_set('Asia/Tokyo');.但缺点是它会影响所有日期/时间功能。 如果您将date_create()->format()与timezone_open()结合使用,则此问题不存在。

PHP支持多个时区。 有趣的是它甚至支持北极圈和南极洲。 你听说过date_create()->format()吗? 如果没有,那就不用担心,5分钟前我也没有听说过。 但是,这里的好处是PHP知道date()。

查看所有支持的时区列表:[http://php.net/manual/en/timezones.php。]

更多o.o.p.

O.O.P. 使用state-full Object。 所以我更喜欢用这种方式思考:

// 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'),

);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值