Jump to content

.mktime and .strftime gives wrong day of week


mfandel

Recommended Posts

Problem: the php code is returning the wrong day of the week on a statistics report the software generates. So when you go run the statistics page and it queries the DB it returns a value but the wrong day label shows up.


In my test case I have data only on Thursday of the month and when I run the report it shows up as data for Sunday.


Here are what I assume are the two section of code from my research.. rather than posting the entire php file. I guess at least I think I narrowed down the code section...small victories.


The code used to get the first day of the month is (which i have seen out there and compared and looks like it is correct):



function get_first_day($day_number=1, $month=false, $year=false)
{
$month = ($month === false) ? strftime("%m"): $month;
$year = ($year === false) ? strftime("%Y"): $year;

$first_day = 1 + ((7+$day_number - strftime("%w", mktime(0,0,0,$month, 1, $year)))%7);

return mktime(0,0,0,$month, $first_day, $year);
}

Before I go on I have also tried to set $day_number=1 to various values 0-6, but seems to have no effect. I read several post that setting that value was the problem, but made no difference for me. I thought maybe the "session" was causing the issue after trying to learn about them, so I tried to log out and log back in clear my cache and also change browsers after changing the value but that got me nowhere.


The code I guess you would say that calls this??? to generate the output report that is not correct is:



<table id="graph_weekday" class="data" style="display:none" cellpadding="0" cellspacing="0" width="100%">
<caption><?php echo _occupancy_per_week." / "._days;?></caption>
<thead>
<tr>
<td class="no_input"> </td>
<?php
foreach ($label_wk as $value) {
echo "<th>".strftime("%A", get_first_day($value, $_SESSION['statistic_month'], $_SESSION['selectedDate_year']))."</th>";
}
?>
</tr>
</thead>
<tbody>
<tr>
<th><?php echo _days;?></th>
<?php
foreach ($data_wk as $value) {
echo "<td>".$value."</td>";
}
?>
</tr>
</tbody>
</table>
}
?>

So things seem to be working to pull the data, but the label is wrong. Though setting the value for $day_number= to something else doesn't seem to work.


Is there something wrong with the.$value. which is being echoed and I need to apply the get_first_day to the value?


Thanks for any help.


Link to comment
Share on other sites

I am trying to dig into this and tracked back to some additional code that might be relevant 

// Bar Plot Guest by weekday/month
$data_wk = array();
$label_wk = array();


$statistic = querySQL('statistic_weekday');


foreach ($statistic as $key => $value) {
foreach($value as $paxsum){
$label_wk[] = $key;
$data_wk[] = $paxsum;
}
}

 

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.