周号唯一可排序的整数id

时间:2018-11-27 15:34:44

标签: php datetime

我的问题是关于编程哲学的,我用PHP语言给出了一个例子,但可以用任何一种编程语言来询问:

  • 如果我必须为一天提供唯一的可排序整数ID,则可以使用<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:id="@+id/button2" android:layout_width="0dp" android:layout_height="0dp" android:layout_marginStart="8dp" android:layout_marginEnd="8dp" android:layout_marginBottom="8dp" android:text="1" app:layout_constraintBottom_toTopOf="@+id/button4" app:layout_constraintEnd_toStartOf="@+id/button3" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <Button android:id="@+id/button5" android:layout_width="0dp" android:layout_height="0dp" android:layout_marginStart="8dp" android:layout_marginTop="8dp" android:layout_marginEnd="8dp" android:layout_marginBottom="8dp" android:text="4" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@+id/button4" app:layout_constraintTop_toBottomOf="@+id/button3" /> <Button android:id="@+id/button4" android:layout_width="0dp" android:layout_height="0dp" android:layout_marginStart="8dp" android:layout_marginTop="8dp" android:layout_marginEnd="8dp" android:layout_marginBottom="8dp" android:text="3" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toStartOf="@+id/button5" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/button2" /> <Button android:id="@+id/button3" android:layout_width="0dp" android:layout_height="0dp" android:layout_marginStart="8dp" android:layout_marginTop="8dp" android:layout_marginEnd="8dp" android:layout_marginBottom="8dp" android:text="2" app:layout_constraintBottom_toTopOf="@+id/button5" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@+id/button2" app:layout_constraintTop_toTopOf="parent" /> </android.support.constraint.ConstraintLayout> 格式
  • 如果我必须给一个月赋予唯一的可排序整数ID,则可以使用'Ymd'格式
  • 如果必须在一周内提供唯一的可排序整数ID,我不能使用'Ym'格式

由于'YW'2017-01-01将返回相同的星期ID:

2017-12-31

因此,我可以将一周的第一天ID用作唯一可排序的整数ID周,但是也许有一种更简单的解决方法?更好的做法?

2 个答案:

答案 0 :(得分:1)

您可以改用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

答案 1 :(得分:1)

使用数字时,您必须注意。早在 6 年前,在php.net上已有针对该场景的贡献说明。看看here,希望这可以帮助您清楚地了解:)

原因:

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');

演示: https://3v4l.org/sMKAF