Php 周数唯一可排序整数id
我的问题是关于编程原理的,我用PHP语言给出了一个例子,但可以用任何编程语言提出:Php 周数唯一可排序整数id,php,datetime,Php,Datetime,我的问题是关于编程原理的,我用PHP语言给出了一个例子,但可以用任何编程语言提出: 如果我必须给一天指定一个唯一的可排序整数ID,我可以使用'Ymd'格式 如果我必须给一个月指定一个唯一的可排序整数ID,我可以使用'Ym'格式 如果我必须为一周指定一个唯一的可排序整数ID,我不能使用'YW'格式 由于2017-01-01和2017-12-31将返回相同的周ID: $date1 = DateTime::createFromFormat('Y-m-d', '2017-01-01'); $date
- 如果我必须给一天指定一个唯一的可排序整数ID,我可以使用
格式'Ymd'
- 如果我必须给一个月指定一个唯一的可排序整数ID,我可以使用
格式'Ym'
- 如果我必须为一周指定一个唯一的可排序整数ID,我不能使用
格式'YW'
2017-01-01
和2017-12-31
将返回相同的周ID:
$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
所以我可以使用一周的第一天ID作为唯一的可排序整数ID week,但是可能有更简单的方法来解决它?更好的做法?您可以使用
o
:
echo $date1->format('oW').' '.$date2->format('oW');
//201652 201752
o ISO-8601周编号年份。该值与Y值相同,只是如果ISO周数(W)属于上一年或下一年,则使用该年。(在PHP 5.1.0中添加)
您可以改用
o
:
echo $date1->format('oW').' '.$date2->format('oW');
//201652 201752
o ISO-8601周编号年份。该值与Y值相同,只是如果ISO周数(W)属于上一年或下一年,则使用该年。(在PHP 5.1.0中添加)
当使用周数字和年时,您必须注意。在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');
演示:在使用年数的周数时,必须注意。在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');
演示:正是我需要的,非常感谢您的帮助正是我需要的,非常感谢您的帮助非常感谢,我不知道
'o'
格式。非常感谢,我不知道'o'
格式。