Идея заключается в следующем: напишите функцию для печати промежутка времени от текущей / сегодняшней даты (во время вызова функции) до даты, представленной в качестве аргумента.
Предположения:
- Дата ввода всегда будет завтра или позже, в будущем.
- Дата ввода никогда не будет более 10 лет в будущем.
Правила:
- Выходные данные должны быть в следующем формате: "[z year (s)], [x month (s)], y дн (s) до -Input Date-"
- Выходные временные рамки (день / месяц / год) должны быть правильно умножены. то есть
1 month
не1 months
- Входные данные могут быть в любом формате даты, который вы предпочитаете (15.03.12 - 15 марта 2012 - 2012.03.15).
Пример: предполагается, что программа запущена 15 марта 2012 года:
- Дата ввода
3/20/12
=5 days until 3/20/12
- НЕ Введите дату
4/16/12
=1 month, 1 days until 3/20/12
- Дата ввода
2012.04.20
=1 month, 5 days until 2012.04.20
- НЕ Введите дату
2012.04.20
=36 days until 2012.04.20
- Дата ввода
10/31/17
=5 years, 7 months, 16 days until 10/31/17
- Дата ввода
3/15/13
=1 year until 3/15/13
Это код гольф, поэтому выигрывает самый короткий код.
Я полагаю, ради крайнего срока, я буду выбирать ответ на:
23 марта 2012 года!
(Это мой первый вопрос компьютерной графики, так что я буду рад исправить любые ошибки с моей стороны!)
now until <input time>
pnow-<input time>
Ответы:
R, 99 символов
Я знаю, что это что-то вроде мошенничества, но R - все о его пакетах, и lubridate настолько удобен для такого рода задач!
Использование:
источник
PHP, 315 символов
Использование:
Принимает даты в
dd/mm/yyyy
формате. Я использовал расчет продолжительности месяца Гриффина ( опять же ), хотя мне пришлось добавить в него дополнительные скобки, чтобы приоритет работал правильно. Я также оставил несколько разрывов строк, чтобы их было легче читать.источник
Рубин (213)
принимает даты в любом формате
Date.parse
принимает. Пробовал только сyyyy-mm-dd
чтобы получить недели, добавьте:
и
[0,'week'],
(между месяцем и днем). дни будут всегда< 7
источник
uninitialized constant Object::Date (NameError)
... Я думаю, вы используетеDate
класс RailsVBA:
766631 символовСпасибо mellamokb за помощь в сокращении сроков создания и
IIf
.Я знаю
VBA
определенно не поддается кодированию в гольф, а также некоторым другим языкам, но это то, в чем я хорош (не эксперт). :-)Это было забавное упражнение для меня!
источник
If y > 0 Then a = y & " year,":If y > 1 Then a = y & " years,"
можно объединить вместе сa = y & " year" & Left("s", y - 1) & ","
1 year
,1 month
,1 day
. Я исправил это в ответе. Это на самом деле сделано для более короткого кода!If v < w Then d = w - v:If v = w Then d = 0
наIf v <= w Then d = w - v
дополнительные 20 символов. Я обновлю ответ, если у меня появятся более существенные изменения в публикации.JavaScript (ES6), 125 байт
Поскольку в ответе Паоло использовалась внешняя библиотека, я сделаю то же самое. Node.js - это все о пакетах NPM и момент + HumanizeDuration так удобен для этой задачи!
Узел среды
Среда браузера
Поскольку библиотеки объявляют глобальные переменные, на самом деле они немного короче (102 байта). Не ясно, нужно ли мне включать теги скрипта, необходимые для загрузки в сторонний JavaScript, поэтому я буду считать Node one официально.
CoffeeScript, также 125 байтов
источник
PHP, 151 символ
источник
echo date_diff(new DateTime(),new DateTime($argv[1]))->format('%yyears, %mmonths, %a days');
его длина 92 символа при вызове из командной строки.