使用我对时间和strtotime功能的非常有限的理解,我写了一些代码,用于检查当前日期是否晚于或早于另一个。
让我们假设$ _editDateString var包含字符串"本月的第二个星期二" - $ _finalEditDate的预期功能最终包含本月第二个周二的日期(d / m / y格式)如果该日期是过去的,否则包含它之前4周的日期 - 因此$ _finalEditDate应该只包含早于或等于今天日期的日期。
不幸的是,我无法在将来停止制作日期。
这里是代码,如果不那么害羞的人可以告诉我哪里出错了,我会很高兴。
if (time() >= date("d/m/y",strtotime($_editDateString))){
$_finalEditDate = date("l d/m/y",strtotime("$_editDateString"));}
else{
$_finalEditDate = date("l d/m/y",strtotime("$_editDateString - 4 weeks"));}
答案 0 :(得分:2)
在比较PHP中的日期时,有两种方法:
DateTime
对象,可以进行本地比较。第一个看起来像这样:
// NOTE that both timestamps are expected to be in UTC
$timestamp1 = strtotime("2015/12/03 04:33");
$timestamp2 = strtotime("2015/12/01 05:33");
if ($timestamp1 < $timestamp2) {
// …
}
第二个看起来像这样:
$tz1 = new DateTimezone("America/New_York");
$tz2 = new DateTimezone("Europe/Berlin");
$date1 = new DateTime("2015/12/03 06:00", $tz1);
$date2 = new DateTime("2015/12/03 09:00", $tz2);
// Note that $date1 is later, because the timezone adds an offset
if ($date1 < $date2) {
// …
}
决定使用哪种方法取决于您的申请。如果您只是在同一时区处理几个日期,并忽略DST之类的东西,请使用第一种方法。如果您有一个更复杂的应用程序并且需要考虑时区和DST,那么实际的DateTime对象可能是一个更可靠的选择。
决定使用哪种方法取决于您的使用案例。如果您要比较系统生成的日期,请确保它们是UTC格式,并且您可以使用简单的时间戳。只要您使用引用系统外日期的用户输入日期或日期(例如日历条目或公共交通时间表),请使用具有正确时区的真实DateTime
个对象。
¹Unix时间戳通常假定为UTC。当然,当您通过用户输入获得2015/12/03 04:33
之类的日期并将其转换为strtotime
时,您还会获得时间戳。但隐含的是,这个时间戳将引用当地日期。当这些日期涉及不同的时区而你试图比较它们时,你会遇到麻烦。
答案 1 :(得分:0)
将private
返回的值与klass_name.send(:include, described_class)
返回的值进行比较,并使用time()
函数格式化该日期。
strtotime($_editDateString)