Stalinko
Stalinko

Reputation: 3646

What is first weekday in PHP's strtotime()?

strtotime() in PHP is quite powerfull function. One of it's features is relative dates.

For example this command:

echo date('Y-m-d', strtotime('Sunday this week'));

produces 2016-02-14 on my machine (today is "2016-02-12", Friday). Thus it supposes that first day of week is Monday. However in different locales countries first day of week is different. Is there a way to change this behaviour and make strtotime() think that first week day is Sunday?

Upvotes: 4

Views: 652

Answers (2)

syck
syck

Reputation: 3029

As discussed in the comments of the question, it may be better to rely on a custom function, which is tested and will most probably produce the same result on every machine.

A function like this could be:

<?php

function x() {
  return date('Y-m-d', date('N')==7 ? strtotime('today') : strtotime('last sunday'));
}

echo x();

You find a demo here.

If you have many machines to deploy your code to, you could additionally include a test script in the installation process which tests if it gets correct results from this (and other things that may vary depending on installation).

Upvotes: 1

John C
John C

Reputation: 8415

PHP 5.5 introduced the Internationalization extension, which among many useful functions provides and IntCalendar class. It has a static function getFirstDayOfWeek which can be used to get the first day of the week, based a locale.

Straight from the docs:

ini_set('date.timezone', 'UTC');

$cal1 = IntlCalendar::createInstance(NULL, 'es_ES');
var_dump($cal1->getFirstDayOfWeek()); // Monday

Upvotes: 0

Related Questions