Вы можете сделать это в 1 строке, используя netloader для Java :
new NetFile(new File("my/zips/1.zip"), "https://example.com/example.zip", -1).load(); //returns true if succeed, otherwise false.
Вы фактически не вычитаете день или год из начала года, вы вычитаете их из текущей даты. Кроме того, поскольку вы выводите в формате Y-01-01
, обе даты всегда будут иметь 1 для месяца и дня. Сначала нужно сгенерировать первый день года, а затем вычесть из него и вывести в формате Y-m-d
:
$foy = strtotime(date('Y-01-01'));
var_dump(date('Y-m-d', strtotime('-1 day', $foy)));
var_dump(date('Y-m-d', strtotime('-1 year', $foy)));
Вывод:
string(10) "2018-12-31"
string(10) "2018-01-01"