【问题标题】:PHP time confusion with if statementsPHP 与 if 语句的时间混淆
【发布时间】:2015-11-27 12:41:30
【问题描述】:

我确信这是一个非常明显的问题,但是我真的不擅长使用时间戳并将它们与 if 语句中的它们进行比较。

我要做的是定义是否有员工在团队中 0-5 months6-11 months12-17 months18+ months

这只是为了改变表的类

0-5 个月为红色

6-11 个月为橙色

12-17 个月为蓝色

18 个月以上为绿色

到目前为止,这是我的代码,我确信它完全错误。 $dataResult['hire_date'] 是他们被雇用时的timestamp

$milestone6 = strtotime("6 months ago");
$milestone12 = strtotime("12 months ago");
$milestone18 = strtotime("18 months ago");

if($dataResult['hire_date'] < $milestone6) {
    //red?
} elseif($dataResult['hire_date'] < $milestone12) {
    //orange?
} elseif($dataResult['hire_date'] < $milestone18) {
    //blue?
} else {
   //green?
}

再次感谢您。 if 语句的顺序无关紧要。会尽可能标记为已回答。

【问题讨论】:

  • 好吧,在我看来,您不应该发布您确定完全错误的代码。您希望其他人为您完成所有工作吗?

标签: php if-statement timestamp unix-timestamp


【解决方案1】:
$milestone6 = strtotime("6 months ago");
$milestone12 = strtotime("12 months ago");
$milestone18 = strtotime("18 months ago");

$dataResult['hire_date'] = strtotime( '27-05-2015' );

if($dataResult['hire_date'] > $milestone6) {
    echo 'red';
} elseif($dataResult['hire_date'] > $milestone12 ) {
    echo 'orange';
} elseif($dataResult['hire_date'] > $milestone18 ) {
    echo 'blue';
} else {
    echo 'green';
}

你们都在混淆时间值,等式应该反过来,试试吧;)

【讨论】:

  • 看,我认为这也不是它应该的工作方式。查看截图prntscr.com/97j6nv
  • 嘿删除编辑,第一个答案效果很好 - 我的错误是我在里程碑 18 字符串上犯了一个错误。谢谢!
【解决方案2】:
$milestone6 = strtotime("6 months ago");
$milestone12 = strtotime("12 months ago");
$milestone18 = strtotime("18 months ago");

if($dataResult['hire_date'] < $milestone6) {
    //red?
    //0-5 months is RED
} elseif($dataResult['hire_date'] < $milestone12 && $dataResult['hire_date'] >= $milestone6) {
    //orange?
    //6-11 months is ORANGE
} elseif($dataResult['hire_date'] < $milestone18 && $dataResult['hire_date'] >= $milestone12) {
    //blue?
    //12-17 months is BLUE
} else {
   //green?
   //18+ months is GREEN
}

【讨论】:

  • 这似乎使 0-5 green 6-11 red12-18 red18+ red
  • $milestone18 有什么价值?如果$milestone18 的值为 18,而您需要 17,那么我将编辑 @Jayden 上方的代码
  • 随便strtotime("18 months ago") 出来,对吗?
  • 你确定strtotime("18 months ago") 会给你19而不是18的值吗? @杰登
  • 我不确定我认为 strtotime("18 months ago") 只是给了我从 18 个月前到这个日期的时间戳的时间戳?
猜你喜欢
  • 2014-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-28
相关资源
最近更新 更多