我有一个脚本可以保存这样的日期。
$date = date('i')+50;
当我将其存储在数据库中时,我得到了类似于1382851302的东西,仅使用>或<就可以比较过去和将来。
在使用基于jquery datepicker的过滤器的管理即时消息的脚本的其他部分中。问题是我无法将在那里选择的日期转换为相同的“ date()”格式,因此我可以比较日期,我认为时间是某种方式参与这里(一),我不能。
这是我的尝试。
$iniciopub = date('Y-m-d',strtotime($_POST['iniciopub']));
$finpub = date('Y-m-d',strtotime($_POST['finpub']));
这不起作用..(仅存储“ 1970”)
如果我尝试这个..
$iniciopub = date($_POST['iniciopub']);
$finpub = date($_POST['finpub']);
我只是保存一天,我认为因为格式像00/00/0000,所以/会“剪切”该值,因为我只能保存int。在数据库中,就像您所需要的格式一样,我只是数字。
真的很迷失了,如果这是一个愚蠢的问题,对不起。
我在学习,所以不要那么努力。编辑:
好的,这是我现在使用mktime()的代码
$iniciodate = str_replace("/",",",$_POST['iniciopub']);
$iniciopub = mktime(0,0,0,$iniciodate);
$findate = str_replace("/",",",$_POST['finpub']);
$finpub = mktime(0,0,0,$findate);
这会将其保存到2013年10月27日的时间戳= 1382824800,但对于2013年10月31日相同
我也使用这种格式,我没有问题
dateFormat: 'mm/dd/yy',
现在在datepicker jquery ui中设置
您的变量$iniciopub
具有价值,1970-01-01
因为strtotime()
返回了false
:
var_dump( strtotime($_POST['iniciopub']) );
查看受支持的日期和时间格式。如果您说的格式是00/00/0000
in $_POST
,则strtotime假定这是美国的月,日和年(mm/dd/yyyy
),如此处所示。
如果输入的格式00/00/0000
是dd/mm/yyyy
最简单的方法,则将使用DateTime::createFromFormat
或str_replace('/', '-', 'dd/mm/yyyy');
使其成为欧洲日期格式dd-mm-yyyy
。
问题更新
这段代码是错误的:
$iniciodate = str_replace("/",",",$_POST['iniciopub']);
$iniciopub = mktime(0,0,0,$iniciodate);
mktime()
有6个参数(第7个is_dst
现在无关紧要)。您不能那样使用$iniciodate
,因为您只在mktime()
函数中输入了第4个参数,而不是您可能认为的第4、5和6个参数。
mktime(0,0,0,'10,27,2013');
与mktime(0,0,0,10,27,2013);
或不相同`mktime(0,0,0,'10','27','2013');
。为什么日期的理由10/27/2013
,并10/31/2013
返回相同的时间戳是因为在这两种情况下,当你施放串10,27,2013
并10,31,2013
以整数(第四个参数),你会得到10
。看到:
$v = '10,27,2013'; var_dump( (int)$v ); # int(10)
$v = '10,31,2013'; var_dump( (int)$v ); # int(10)
因此,如果您拨打以下电话,您的通话是相同的mktime()
:
var_dump( mktime(0,0,0,10) ); # int(1382832000)
如果打开error_reporting(error_reporting(-1);
输入php文件的开头),您会看到,在调用之后mktime(0,0,0,$iniciodate)
您会得到NOTICE:
注意:在第XX行的file.php中遇到的格式不正确的数值
由于10/27/2013
和10/31/2013
是标准的美国日期格式,因此您可以使用strtotime()
而不是mktime()
将日期转换为时间戳:
var_dump( strtotime('10/27/2013') ); # int(1382832000)
var_dump( strtotime('10/31/2013') ); # int(1383177600)
您在评论中问: if i store a date as dd-mm-yyyy. how can i compare the date with other date. am i doing fine storing as timestamp?
是的,您可以将它们存储为时间戳。但是我已经很久没有在代码中使用时间戳了,我将日期存储为YYYY-MM-DD;在RDBMS中,这是一种最佳实践。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句