Я заинтересован в выводе представления текущего квартала года, а также квартала за предыдущий месяц.
Если сегодня 1 января 2012 года, я хотел бы получить
2012q1
а также
2011q4
в качестве соответствующих выходов.
command-line
date
smokris
источник
источник
%m
дает,09
какой bash пытается интерпретировать как восьмеричный из-за ведущего 0, так что это выдает ошибку, которая говорит09: value too great for base (error token is "09")
. Это можно исправить, отключив 0-padding, изменив%m
на%-m
.Используйте мои dateutils :
%q
И%Q
флаги являются специфическими для dateutils, и вернуть четверть как число или в формеQ<NUMBER>
.источник
dconv now -f%Y%Q | tr Q q
если вам действительно нужно, чтобы Q было в нижнем регистре. (PS: мы упаковываем это в Fedora сdate
префиксом вместоd
, так что "dateconv
".)Все решения, которые делятся на четыре, терпят неудачу, например, ноябрь:
Правильная математика будет:
И как таковой, квартал текущего и предыдущего месяца будет:
Это всего лишь двенадцать значений для проверки, правда ...
источник
Вероятно, прямого решения не существует.
Вы можете использовать,
awk
чтобы избежать так много обратных тиков.perl
Решение было бы чище , ноperl
иDateTime
является тяжелым условием.источник
date
дважды.Разделите формат с датой, рассчитайте с помощью awk, отформатируйте с помощью printf:
Просто дата и bash:
источник
2012q0
что неверно.Альтернатива, скорее как любопытство. Если
awk
задействован GNU ,date
он не нужен:источник
Позвоните,
date
чтобы получить текущий год и месяц, а остальное сделайте с помощью арифметики в оболочке.источник
Год-квартал за этот месяц
Четверть года за месяц
источник
Основная математика за этот квартал и квартал прошлого месяца:
Скрипт использует следующие части:
источник
Теперь есть
%q
формат для отображения этой информации.Из журнала выпуска coreutils-8.26 от 30 ноября 2016 года:
И да, это работает!
источник
Если вам нужен финансовый 13-недельный квартал, основанный на недельном календаре ISO, то, к сожалению, новый удобный% q не сработает. Вот версия устаревшего решения @ manatwork с awk / strftime.
Последний маленький троичный бит обрабатывает годы високосной ISO, где в последнем квартале 14 недель.
источник