sorting - 按给定日期的日期对 Twig 数组进行排序
问题描述
我想nextbirthdays
按给定的日期值对数组 ( ) 进行排序。与仅订购日期本身不同,我想按给定的日期排序。在这种情况下,我想显示用户的生日。给出的数据集仅包含生日为今天加上 7 天的用户。
数据集本身可能看起来像这样:
Birthday | Username
--------------+-----------
01. Apr 1953 | User 1
04. Apr 1970 | User 2
02. Apr 1992 | User 3
02. Apr 2002 | User 4
01. Apr 1993 | User 5
使用nextbirthdays|sort
twig 正确排序日期(按最新到最旧或相反)但我想按实际日期排序,然后是月份,然后是日期的年份。
Birthday | Username
--------------+-----------
01. Apr 1993 | User 5
01. Apr 1953 | User 1
02. Apr 2002 | User 4
02. Apr 1992 | User 3
04. Apr 1970 | User 2
原始代码:
<ul>
{% for nextbd in nextbirthdays %}
<li><span class="text-muted mr-3">{{ nextbd.birthday|date("d. M Y") }}: </span>
{% if nextbd.birthday|date("d.m") == "now"|date("d.m") %}
<b>{{ nextbd.firstname }} {{ nextbd.lastname }}</b>
{% else %}
{{ nextbd.firstname }} {{ nextbd.lastname }}
{% endif %}
{% endfor %}
</ul>
排序和映射:
当尝试使用以下语句从树枝调整排序功能时,生日不再出现。
{% for nextbd in nextbirthdays|sort((a, b) => a.birthday <=> b.birthday)|column('birthday') %}
<!-- rest of the code is unchanged -->
{% endfor %}
解决方案
您的代码中确实有两个问题:
|column('birthday')
:使用此过滤器,您将数组限制为birthday
仅列,因此您将不再获得名字或姓氏。- 您的要求比您想象的要复杂:
01. Apr
sorted before02. Apr
表示您正在对日期和月份进行升序排序01. Apr 1993
sorted before01. Apr 1953
表示您正在对年份进行降序排序
所以,你的条件应该是:
a.birthday|date('dm') > b.birthday|date('dm') or (a.birthday|date('dm') == b.birthday|date('dm') and a.birthday|date('Y') < b.birthday|date('Y'))
给出一个 for 循环:
{% for nextbd in nextbirthdays|sort((a, b) => a.birthday|date('dm') > b.birthday|date('dm') or (a.birthday|date('dm') == b.birthday|date('dm') and a.birthday|date('Y') < b.birthday|date('Y'))) %}
{# rest of the code is unchanged #}
{% endfor %}
这可以在这里测试:https ://twigfiddle.com/of3cbi
推荐阅读
- javascript - 使用jquery单击眼睛图标时如何显示和隐藏密码
- php - 如何将值从日期范围选择器传递到 SQL?
- angular - chartjs 高度不跟随父容器
- node.js - Google 2 Factor Authentication with Angular and NodeJS
- javascript - 使用 angularjs 显示/隐藏级联 tr
- javascript - 在页面加载时替换所有 img src - Javascript
- javascript - 如何定义 Django 视图
- events - CreateJS - 为什么调用 mousemove?
- mybatis - MyBatis 3.4.2 如何找到对应版本的MyBatis Generator?
- java - 在 JavaFX 中呈现 TableColumns 的通用方法