将一个月后经过的时间更改为不同的格式

时间:2016-10-23 06:54:30

标签: php codeigniter date

我正在使用codeigniter,我在下面有这个代码它将日期转换为经过时间Asked 1 month, 3 weeks ago

如果日期超过一个月,我希望它只显示日期Asked Sept 01 05:34:13,如果超过一年Asked Sept 01 2015 05:34:13

目前,如果时间少于一个月打印出来,那就好了

示例 1分14秒前被问到

示例 2周,3小时前被问到

$this->when_was_question_posted(strtotime('2016-09-01 05:34:13'))
  

如果日期超过一个月,我怎么能确定   然后显示日期Asked Sept 01 05:34:13,如果早于a   年Asked Sept 01 2015 05:34:13

function when_was_question_posted($distant_timestamp, $max_units = 2) {
    $i = 0;
    $time = time() - $distant_timestamp; // to get the time since that moment

    $tokens = [
        31536000 => 'year',
        2592000 => 'month',
        604800 => 'week',
        86400 => 'day',
        3600 => 'hour',
        60 => 'minute',
        1 => 'second'
    ];

    $responses = [];

    while ($i < $max_units) {
        foreach ($tokens as $unit => $text) {
            if ($time < $unit) {
                continue;
            }
            $i++;
            $numberOfUnits = floor($time / $unit);

            $responses[] = $numberOfUnits . ' ' . $text . (($numberOfUnits > 1) ? 's' : '');
            $time -= ($unit * $numberOfUnits);
            break;
        }
    }

    if (!empty($responses)) {
        return 'Asked ' . implode(', ', $responses) . ' ago';
    }

    return 'Just now';
}

enter image description here

1 个答案:

答案 0 :(得分:1)

这是让你去的东西...

function find_the_time(data) {
  var arr = data.slice(), ans = {};
  var count_less_than_three = 0, count_less_than_four = 0, count_less_than_six = 0;

  console.log(arr);

  arr.sort(function(a,b) { return a - b; });

  if ((arr[0] > 2) || (arr[1] > 5)) {
    // Rule 1 - Hh:mm must be <= 2
    // Rule 2 - hh:Mm must be <= 5
    console.log('No solution');
    return -1;
  }

  for (var el of arr) {
    if (el < 3) {
      // count_less_than_three will be at least 1
      count_less_than_three++;
    }
    if (el < 4) {
      // count_less_than_four will be at least 1
      count_less_than_four++;
    }
    if (el < 6) {
      // count_less_than_six will be at least 2
      count_less_than_six++;
    }
  }

  if (count_less_than_three === count_less_than_six) {

    if (count_less_than_three == 2) {
      // Two elements have values less than 3
      // so the time must be earlier than 20:00
      // Rule 3 - Hh:mm must be <= 1
      if (arr[0] > 1) {
        console.log('No solution');
        return -1;
      } else {
        ans.c = arr.splice((count_less_than_three - 1), 1);
        ans.a = arr.splice((count_less_than_three - 2), 1);
        ans.b = arr.splice(1, 1);
        ans.d = arr.splice(0, 1);
      }
    } else {

      ans.a = arr.splice((count_less_than_three - 1), 1);
      ans.b = arr.splice((count_less_than_three - 2), 1);

      if (arr[1] < 6) {
        ans.c = arr.splice(1, 1);
        ans.d = arr.splice(0, 1);
      } else {
        ans.d = arr.splice(1, 1);
        ans.c = arr.splice(0, 1);
      }

    }

  } else {

    ans.a = arr.splice((count_less_than_three - 1), 1);

    if (ans.a < 2) {
      // b can have any value so select the largest available
      ans.b = arr.splice(2, 1);
    } else {
      // a == 2 so count_less_than_four comes into play
      // Rule 4 - hH:mm must be <= 3
      // Array size has been reduced so decrement count_less_than_four
      count_less_than_four--;
      ans.b = arr.splice((count_less_than_four - 1), 1);
    }

    if (arr[1] < 6) {
      ans.c = arr.splice(1, 1);
      ans.d = arr.splice(0, 1);
    } else {
      ans.d = arr.splice(1, 1);
      ans.c = arr.splice(0, 1);
    }

  }
  console.log('Answer: ' + ans.a + '' + ans.b + ':' + ans.c + '' + ans.d);
  return ans.a + '' + ans.b + ':' + ans.c + '' + ans.d;
}

var test_data = [
  [ 2, 1, 2, 1 ],
  [ 9, 5, 7, 1 ],
  [ 2, 2, 7, 6 ],
  [ 2, 6, 6, 1 ],
  [ 0, 5, 9, 8 ],
  [ 0, 6, 9, 8 ],
  [ 2, 5, 9, 3 ]
];

test_data.forEach(find_the_time);