Skip to content

Instantly share code, notes, and snippets.

@ptz0n
Created November 13, 2011 11:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ptz0n/1361995 to your computer and use it in GitHub Desktop.
Save ptz0n/1361995 to your computer and use it in GitHub Desktop.
YN string to dates
/**
* YN string to dates
*
* @param string $from
* @param string $to
* @param string $yn
*
* @return array $dates
*/
function ynToDates($from, $to, $yn)
{
$from = strtotime($from);
$to = strtotime($to);
$days = (int)round(($to - $from) / 86400) + 1;
// Validate YN string length to date range
if($days != strlen($yn)) {
return false;
}
else {
$yn = strrev($yn);
$dates = array();
while($days) {
if($yn[$days-1] == 'Y') {
$dates[] = date('c', $to - ($days-1)*86400);
}
$days--;
}
return $dates;
}
}
var_dump(ynToDates('2011-12-11', '2012-12-08', 'NNNNNNNNYYYYYNNNYYYYNNYYYYNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNYNNNNNNNNNNNNNNNNNNNNNNNNYNNNNNNNNNNNNNNNNNYNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNYYYYYNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN'));
@ptz0n
Copy link
Author

ptz0n commented Nov 13, 2011

Output:

array(21) {
  [0]=>
  string(25) "2011-12-19T00:00:00+01:00"
  [1]=>
  string(25) "2011-12-20T00:00:00+01:00"
  [2]=>
  string(25) "2011-12-21T00:00:00+01:00"
  [3]=>
  string(25) "2011-12-22T00:00:00+01:00"
  [4]=>
  string(25) "2011-12-23T00:00:00+01:00"
  [5]=>
  string(25) "2011-12-27T00:00:00+01:00"
  [6]=>
  string(25) "2011-12-28T00:00:00+01:00"
  [7]=>
  string(25) "2011-12-29T00:00:00+01:00"
  [8]=>
  string(25) "2011-12-30T00:00:00+01:00"
  [9]=>
  string(25) "2012-01-02T00:00:00+01:00"
  [10]=>
  string(25) "2012-01-03T00:00:00+01:00"
  [11]=>
  string(25) "2012-01-04T00:00:00+01:00"
  [12]=>
  string(25) "2012-01-05T00:00:00+01:00"
  [13]=>
  string(25) "2012-04-05T01:00:00+02:00"
  [14]=>
  string(25) "2012-04-30T01:00:00+02:00"
  [15]=>
  string(25) "2012-05-18T01:00:00+02:00"
  [16]=>
  string(25) "2012-06-25T01:00:00+02:00"
  [17]=>
  string(25) "2012-06-26T01:00:00+02:00"
  [18]=>
  string(25) "2012-06-27T01:00:00+02:00"
  [19]=>
  string(25) "2012-06-28T01:00:00+02:00"
  [20]=>
  string(25) "2012-06-29T01:00:00+02:00"
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment