首页 > 解决方案 > 在使用 Jalali 波斯日期的字符串上调用成员函数 diff()

问题描述

我有一个数据库类型的finish_time列。date我正在使用Jalali包通过以下代码获取当前的波斯日期

$now = \Morilog\Jalali\jDateTime::strftime('Y-m-d', strtotime('now'));

我想知道 和 之间的天$nowfinish_time。我在下面使用了这段代码:

$now->diff($giveaway->finish_time)

但我得到这个错误

Call to a member function diff() on string.

我怎么解决这个问题?

标签: phplaraveldate

解决方案


jDateTime::strftime返回一个格式化string的,所以不可能调用->diff() 你的变量$now,它是一个字符串。

为此使用碳实例:

$now = \Morilog\Jalali\jDateTime::strftime('Y-m-d H:i:s', strtotime('now'));

$_now = \Morilog\Jalali\jDateTime::createCarbonFromFormat('Y-m-d H:i:s', $now);
dd($_now->diff($giveaway->finish_time));

更新:

假设$giveaway->finish_time返回一个类似的字符串1394/11/25 15:00:00,那么您需要将其转换为DateTime实例

$finishDate = \Morilog\Jalali\jDateTime::createCarbonFromFormat(
      'Y/m/d H:i:s', $giveaway->finish_time
); 

// Change the dateTime format according to how your ->finish_time is being formatted

// then, you'll be able to get the datetime difference using
dd($_now->diff($finishDate));

推荐阅读