我的问题是关于编程哲学的,我用PHP语言给出了一个例子,但可以用任何一种编程语言来询问:
<?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>
格式'Ymd'
格式'Ym'
格式由于'YW'
和2017-01-01
将返回相同的星期ID:
2017-12-31
因此,我可以将一周的第一天ID用作唯一可排序的整数ID周,但是也许有一种更简单的解决方法?更好的做法?
答案 0 :(得分:1)
您可以改用o
:
echo $date1->format('oW').' '.$date2->format('oW');
//201652 201752
o ISO-8601周编号年份。它的值与Y相同,但如果ISO周编号(W)属于上一年或下一年,则使用该年份。 (在PHP 5.1.0中添加)
答案 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');