什么是PHP的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?

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

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).