2015-07-10 4 views
4

Я хотел бы получить разницу во времени между двумя датами в Jekyll. Как я могу это достичь?Получите разницу во времени между двумя датами в Jekyll

{% capture currentDate %}{{ site.time | date: '%Y-%m-%d' }}{% endcapture %} 
{{currentDate}} 
{% capture event_date %}{{ entry.date }}{% endcapture %} 
{% if event_date < currentDate %}Yes{% else %}No{% endif %} 

В записи есть мой YAML:

--- 
title: ChartLine C3 
type: charts 
description: Chart with round for prisma 
id: c3-1 
date: 2015-07-18 
--- 

ответ

2

Если все, что вы хотите сделать, это знает ли дата от вашего вводного раньше, чем системного времени, то вы можете использовать ISO 8601 формат даты и полагаться на лексикографическое упорядочение. Это своего рода обман, но он будет работать на примере, который вы предоставили.

Очень важно, чтобы захватить какsite.time и дата с вашего фронта Matter (page.past_date и page.future_date в примере ниже) в формате ISO 8601 для того, чтобы этот трюк, чтобы работать.

--- 
layout: default 
past_date: 2015-03-02 
future_date: 2016-03-02 
--- 

{% capture currentDate %}{{ site.time | date: '%F' }}{% endcapture %} 
{% capture pastDate %}{{ page.past_date | date: '%F' }}{% endcapture %} 
{% capture futureDate %}{{ page.future_date | date: '%F' }}{% endcapture %} 
<br>currentDate: {{currentDate}} 
<br>PastDate earlier than currentDate? {% if pastDate < currentDate %}Yes{% else %}No{% endif %} 
<br>FutureDate earlier than currentDate? {% if futureDate < currentDate %}Yes{% else %}No{% endif %} 

дает мне следующий вывод:

CurrentDate: 2015-07-12

PastDate раньше, чем CurrentDate? Да

FutureDate ранее, чем currentDate? No

+1

Здравствуйте, я не понимаю, почему необходимо будущее. Не могли бы вы объяснить мне немного больше? Я хотел бы знать только страницы, созданные за последние 10 дней. –

+0

@SilvioS. Это не обязательно, я просто использовал его в качестве еще одного примера, чтобы показать, что сравнения работают. ;) –

4

Никто не ответил на этот вопрос, но это не невозможно.

Вы можете получить разницу между годами, скажем, сколько лет прошло с тех пор 2000 год будет:

{{ site.time | date: '%Y' | minus:2000 }} 

В течение нескольких дней между двумя датами, это труднее .. Лучше всего смотреть на плагин: https://github.com/markets/jekyll-timeago

это выход может быть немного многословным, хотя, но вы можете изменить сам плагин (посмотрите через код, он не слишком сложен)

3

способ сделать это в жидкости (Джекила шаблонный движок) глупо:

{% assign today = site.time | date: '%s'  %} 
{% assign start = '20-01-2014 04:00:00' | date: '%s' %} 
{% assign secondsSince = today | minus: start  %} 
{% assign hoursSince = secondsSince | divided_by: 60 | divided_by: 60  %} 
{% assign daysSince = hoursSince | divided_by: 24 %} 

Hours: {{hoursSince}} 
Days: {{daysSince}} 

Часы работы: 27780

дней: 1157

Обратите внимание, что divide_by операция Ликвида округляет автоматически.

Remainder hours: {{hoursSince | modulo: 24}} 

Остаточного часов: 12

Если это вас раздражает настолько, насколько это раздражает меня, то вы можете сделать это, чтобы восстановить знаков после запятой:

{% assign k = 10 %} 
{% assign divisor = 24 %} 
{% assign modulus = hoursSince | modulo: 24 | times: k | divided_by: divisor %} 
{{daysSince}}.{{modulus}} 

1157.5

Добавить ноль в k, чтобы добавить более десятичные знаки.

Смежные вопросы