2010-07-16 74 views
1

,所以我有一个日期格式像10年7月9日,我想知道如何从该日期前获得,如果我能有一个像条件PHP一周前从特定日期

if(is_date_with_1_week_of_above_date){ 
//do something 
} 

回答

1

你的日期没有说明格式(是MM-DD-YY,DD-MM-YY,YY-MM-DD等)?但是,使用ISO 8601日期格式的例子是这样的:

$oneWeekAgo = strftime("%Y-%m-%d", strtotime("2010-07-09") - 60*60*24*7);

对于一个比较,你可以使用UNIX时间戳的值

$date = "2010-07-09"; 
$compareDate = "2010-07-03"; 
$curTimestamp = strtotime($date); 
$compareTimestamp = strtotime($compareDate); 

if(abs($curTimestamp - $compareTimestamp) < 60*60*24*7) 
{ 
    // within 1 week 
} 

编辑

每评论日期格式,dd-mm-yy是用于日期的公认格式,但mm-dd-y不在时间上,如下所示:

http://www.php.net/manual/en/datetime.formats.date.php

对于它的工作,你必须将短划线转换为斜线。

另外,如果你正在寻找,如果日期是专门提前一个星期,

$date = str_replace('-','/',"07-10-10"); 
$compareDate = str_replace('-','/',"07-03-10"); 
$curDate = strftime("%m/%d/%y", strtotime($date)); 
$compareDate = strftime("%m/%d/%y", strtotime($compareDate) + 60*60*24*7); 

if($curDate == $compareDate) 
{ 
    // is one week prior 
    echo "OK"; 
} 
+0

其2010年7月10日,我想找到07- 03-2010 – Trace 2010-07-16 01:33:06

+0

那就是: $ oneWeekAgo = strftime(“%m-%d-%Y”,strtotime(“07-10-2010”) - 60 * 60 * 24 * 7); 基本上,你正在转换的东西秒,然后它是简单的减法/加法从那里。 60秒= 1分钟,60分钟= 1小时,24小时= 1天,7天= 1周。这适用于具有确定长度的事物,但对于具有变化的长度来说不太好。您如何定义1个“月”,因为一个月的长度可能会有所不同? – Klinky 2010-07-16 01:51:34

5

对于有关检查日期为当前时间戳

if(strtotime('-1 week')>=$dateToCheck) { 
# $dateToCheck is within the last week 
} 

其他反应有很好的解决方案简单检查两个日期/时间是否在一周之内 - 没有意义的是我重复他们。

1

根据您的时区,有些日子可能只有23个小时,所以您不能使用一天的规则(60秒* 60分钟* 24小时)并用此来计算特定日期。

指定日期:

$specific_date = date("Y-m-d"); // for today 

$specific_date = date("Y-m-d", $timestamp); // where timestamp is: Seconds since the Unix Epoch (January 1 1970 00:00:00 GMT) 

答案将是

$date = strtotime($specific_date . " -1 week");