Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Date('W') vs strftime('%W')

0 views
Skip to first unread message

kaydubbleu

unread,
Oct 9, 2008, 8:36:22 PM10/9/08
to
I have stumbled across what I think seems to be a weird situation, and
was hoping that maybe someone out there could point me in the
direction as to why it is occuring.

$date = '2008-09-16';

//- Outputs 38
echo date('W',strtotime($date));

//- Outputs 37
echo strftime('%W',strtotime($date));

This is a bit of a headache when trying to subtotal reports that are
based on a week of the year and Smarty date_format relies on strftime
while I am using date() earlier. I am unsure as to which one is
correct as I havent counted the weeks in the year to find out.. Which
should I use?

kaydubbleu

unread,
Oct 9, 2008, 8:49:10 PM10/9/08
to
Turns out that date() is correct by my diary. So I will use that but
its still puzzling me as to why strftime is incorrect on this.

Curtis

unread,
Oct 10, 2008, 3:04:57 AM10/10/08
to
kaydubbleu wrote:
> On Oct 10, 10:36 am, kaydubbleu <kevwilli...@gmail.com> wrote:
>> I have stumbled across what I think seems to be a weird situation, and
>> was hoping that maybe someone out there could point me in the
>> direction as to why it is occuring.
>>
>> $date = '2008-09-16';
>>
>> //- Outputs 38
>> echo date('W',strtotime($date));
>>
>> //- Outputs 37
>> echo strftime('%W',strtotime($date));
>>
>> This is a bit of a headache when trying to subtotal reports that are
>> based on a week of the year and Smarty date_format relies on strftime
>> while I am using date() earlier. I am unsure as to which one is
>> correct as I havent counted the weeks in the year to find out.. Which
>> should I use?
> Turns out that date() is correct by my diary. So I will use that but
> its still puzzling me as to why strftime is incorrect on this.

The date() function seems to count the first week from 1, while
strftime counts the first week from 0.

--
Curtis

"Álvaro G. Vicario"

unread,
Oct 10, 2008, 3:35:08 AM10/10/08
to
kaydubbleu escribió:

> $date = '2008-09-16';
>
> //- Outputs 38
> echo date('W',strtotime($date));
>
> //- Outputs 37
> echo strftime('%W',strtotime($date));
>
> This is a bit of a headache when trying to subtotal reports that are
> based on a week of the year and Smarty date_format relies on strftime
> while I am using date() earlier. I am unsure as to which one is
> correct as I havent counted the weeks in the year to find out.. Which
> should I use?

They are different things:

W - ISO-8601 week number of year, weeks starting on Monday

%W - week number of the current year as a decimal number, starting with
the first Monday as the first day of the first week

--
-- http://alvaro.es - Álvaro G. Vicario - Burgos, Spain
-- Mi sitio sobre programación web: http://bits.demogracia.com
-- Mi web de humor al baño María: http://www.demogracia.com
--

Geoff Berrow

unread,
Oct 10, 2008, 4:23:23 AM10/10/08
to
Message-ID: <gcn0j5$jj5$1...@huron.algomas.org> from Álvaro G. Vicario
contained the following:

>They are different things:
>
>W - ISO-8601 week number of year, weeks starting on Monday
>
>%W - week number of the current year as a decimal number, starting with
>the first Monday as the first day of the first week

They may well be different, but it's not obvious. I'd never have
expected there to be a 'Week 0'
--
Geoff Berrow 0110001001101100010000000110
001101101011011001000110111101100111001011
100110001101101111001011100111010101101011
http://slipperyhill.co.uk - http://4theweb.co.uk

Jonathan Stein

unread,
Oct 10, 2008, 7:39:31 AM10/10/08
to
Geoff Berrow skrev:

>> W - ISO-8601 week number of year, weeks starting on Monday
>>
>> %W - week number of the current year as a decimal number, starting with
>> the first Monday as the first day of the first week
>
> They may well be different, but it's not obvious. I'd never have
> expected there to be a 'Week 0'

I think the difference is, that an ISO week belongs to the year, where
it has the most of it's days.
This implies, that week number one is the week with the first Thursday
of the year.

Regards

Jonathan

Michael Fesser

unread,
Oct 10, 2008, 2:16:17 PM10/10/08
to
.oO(Jonathan Stein)

Exactly. As a result there can be years with 53 weeks, because the first
week of the new year may already start in the december of the last year.

Micha

0 new messages