PHP和或mysql:从一些变量中生成日期


PHP and or mysql: Make a date from some variables

假设我在php中有两个变量:

$year
$month

然后我想做另一个变量:

$date

其中:

$date=$year-$month-25

所以,如果我有2012年的$年和7的$月,$日期将是2012-07-25。

实际上,我会将它与MySQL中的一些日期进行比较。$year和$month由用户输入。

有人有解决方案吗?该解决方案要么是如何制作$date,要么是任何可以与mysql中的日期进行比较的东西。谢谢你。^^

您可以通过以下方式创建unix时间戳:

$myDate = mktime(0, 0, 0, $month, 25, $year);

这是一个非常有用的东西,因为你可以通过将其格式化为各种各样的格式

echo date("Y-m-d", $myDate);
// Prints something like: 2012-07-25

echo date("l", $myDate);
// Prints something like: Monday

date('l jS 'of F Y h:i:s A', $myDate);
// Prints something like: Monday 8th of August 2005 03:12:46 PM

您可以执行以下

$complete_date = $year."-".$month."-25";

为您提供2012-7-25

请阅读"php手册"中的concat php字符串。

它不是

$date = $year-$month-25;

$date = $year . '-' . $month . '- 25';

$date = $year . "-" . $month . "- 25";

但是对于php字符串来说,简单引号更优化。

解决方案是如何使$date或任何可能长的东西与mysql 中的日期进行比较

这里的关键是使用strtotime来创建和比较。

MySQL日期可以通过使用strototime:转换为整数

strtotime($mysql_date);

然后你可以得到time()并将其与两个进行比较:

time()<>strtotime($mysql_date) // then the two dates are not equal.

您可以使用mktime函数

$date = date('Y-m-d',mktime(0,0,0,$month,25,$year));

好吧,我会使用mktime来获取日期的时间戳(http://php.net/manual/de/function.mktime.php),并使用mysql中的命令unix_timestamp(date(yourfield))对它们进行比较。(只有在保存日期时间值而不是纯日期值时,才需要unix_timestamp中的date())

由于mysql日期默认情况下通常采用Y-m-d格式,因此可以使用

$thedate = date('Y-m-d',mktime(0,0,0,$month,25,$year));
,其中$month$year基于用户输入。当然,您必须使用select/lists让用户以您想要的格式输入。