Номер недели уникальный сортируемый целочисленный идентификатор - PullRequest
0 голосов
/ 27 ноября 2018

Мой вопрос касается философии программирования, я привожу пример на языке PHP, но его можно задать на любом языке программирования:

  • Если мне нужно дать уникальный сортируемый целочисленный идентификатор в день, яможно использовать 'Ymd' формат
  • Если мне нужно присвоить уникальный сортируемый целочисленный идентификатор для месяца, я могу использовать 'Ym' формат
  • Если мне нужно дать уникальное сортируемое целое число длянеделю, я не могу использовать 'YW' формат

Поскольку 2017-01-01 и 2017-12-31 вернут идентификатор той же недели:

$date1 = DateTime::createFromFormat('Y-m-d', '2017-01-01');
$date2 = DateTime::createFromFormat('Y-m-d', '2017-12-31');
echo $date1->format('YW').' '.$date2->format('YW');
// returns 201752 201752

Таким образом, я могу использовать идентификатор первого дня недели как уникальный сортируемый целочисленный идентификатор недели, но, может быть, есть более простой способ его решить?Лучшая практика?

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Вы должны знать, когда используете неделя числа с годами .На php.net уже есть заметка для этого сценария 6 лет назад.Посмотрите здесь , надеюсь, это поможет вам ясно понять:)

Причина:

Y - это год с даты

o - это номер ISO-8601 года

W - это номер недели ISO-8601

$date1 = DateTime::createFromFormat('Y-m-d', '2017-01-01');
$date2 = DateTime::createFromFormat('Y-m-d', '2017-12-31');
echo $date1->format('YW').' '.$date2->format('YW');
echo PHP_EOL;
echo $date1->format('oW').' '.$date2->format('oW');

DEMO: https://3v4l.org/sMKAF

0 голосов
/ 27 ноября 2018

Вместо этого можно использовать o:

echo $date1->format('oW').' '.$date2->format('oW');
//201652 201752

o недельный год нумерации ISO-8601.Он имеет то же значение, что и Y, за исключением того, что если номер недели ISO (W) относится к предыдущему или следующему году, вместо этого используется этот год.(добавлено в PHP 5.1.0)

http://php.net/manual/en/function.date.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...