Bug #54409 [Asn->Dup]: strtotime(): "this week" gives incorrect result for Sunday dates

From: Date: Sun, 07 Aug 2016 09:27:10 +0000
Subject: Bug #54409 [Asn->Dup]: strtotime(): "this week" gives incorrect result for Sunday dates
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-203024@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=54409&edit=1

 ID:                 54409
 Updated by:         cmb@php.net
 Reported by:        1234 dot ia at gmail dot com
 Summary:            strtotime(): "this week" gives incorrect result for
                     Sunday dates
-Status:             Assigned
+Status:             Duplicate
 Type:               Bug
 Package:            Date/time related
 Operating System:   Linux 2.6.36-hardened
 PHP Version:        5.3.6
 Assigned To:        derick
 Block user comment: N
 Private report:     N

 New Comment:

This is a duplicate of bug #63740, which has been fixed as of PHP
5.6.23 and 7.0.8, respectively (see <https://3v4l.org/qelbK>).


Previous Comments:
------------------------------------------------------------------------
[2014-11-02 21:42:30] karl at ivide dot com

A variation on this is that the following code run on a saturday or sunday yields monday's
date, not the same date as one would expect. Tried on PHP 5.6 on Windows.

echo date('Y-m-d', strtotime("+0 weekdays"));

However,

echo date('Y-m-d', strtotime("+0 days"));

Works as expected.

------------------------------------------------------------------------
[2012-03-31 09:54:37] milan dot matejcek at gmail dot com

Bug persists (php 5.3.10), in our country (Czech) week start on Monday. 
If you set Saturday for example (31-03-2012) on your machine 
var_dump(new DateTime('monday this week'));//26-03-2012

Now let's set Sunday (01-04-2012) on your machine
var_dump(new DateTime('monday this week'));//actual 02-04-2012, expected 26-03-
2012

help is variable set first day of week.

------------------------------------------------------------------------
[2011-03-28 17:20:20] 1234 dot ia at gmail dot com

Description:
------------
When trying to get relative dates, strtotime() gives incorrect result for relative format
"{weekday} this week" when the base date is Sunday. It should return the same day, as it
does with other weekdays, but it returns next week's day.

Test script:
---------------
<?php

error_reporting( -1 );
date_default_timezone_set( "Europe/Bratislava" );

for ( $i = 0; $i < 7; $i++ )
{

	$base = strtotime( "2011/01/17 +$i days 12:00:00" );
	$weekday = date( "l", $base );
	$relative = strtotime( "$weekday this week 12:00:00", $base );
	
	echo date( "l Y/m/d", $base ), "\n", date( "l Y/m/d", $relative ),
"\n\n";
}

?>

Expected result:
----------------
Monday 2011/01/17
Monday 2011/01/17

Tuesday 2011/01/18
Tuesday 2011/01/18

Wednesday 2011/01/19
Wednesday 2011/01/19

Thursday 2011/01/20
Thursday 2011/01/20

Friday 2011/01/21
Friday 2011/01/21

Saturday 2011/01/22
Saturday 2011/01/22

Sunday 2011/01/23
Sunday 2011/01/23

Actual result:
--------------
Monday 2011/01/17
Monday 2011/01/17

Tuesday 2011/01/18
Tuesday 2011/01/18

Wednesday 2011/01/19
Wednesday 2011/01/19

Thursday 2011/01/20
Thursday 2011/01/20

Friday 2011/01/21
Friday 2011/01/21

Saturday 2011/01/22
Saturday 2011/01/22

Sunday 2011/01/23
Sunday 2011/01/30


------------------------------------------------------------------------



--
Edit this bug report at https://bugs.php.net/bug.php?id=54409&edit=1


Thread (5 messages)

« previous php.bugs (#203024) next »