5

Есть ли расчет календаря командной строки, который предоставляет эти функции?

  • Дата (плюс | минус) расчет интервала даты
  • Пользовательский формат ввода и вывода

3 ответа3

7

Команда date сделает большую часть этого для вас.

Например, 1 ноября плюс 3 недели - это date -j -v+3w -f"%m/%d/%y" "11/01/10"

Вот несколько примеров из справочной страницы:

Команда:

 date "+DATE: %Y-%m-%d%nTIME: %H:%M:%S"

будет отображать:

 DATE: 1987-11-21
 TIME: 13:36:16

В часовом поясе Европа / Лондон команда:

 date -v1m -v+1y

будет отображать:

 Sun Jan  4 04:15:24 GMT 1998

где это в настоящее время Пн Авг 4 04:15:24 BST 1997.

Команда:

 date -v1d -v3m -v0y -v-1d

покажет последний день февраля 2000 года:

 Tue Feb 29 03:18:00 GMT 2000

Так сделаем команду:

 date -v30d -v3m -v0y -v-1m

потому что нет такой даты, как 30 февраля.

Команда:

 date -v1d -v+1m -v-1d -v-fri

будет отображать последнюю пятницу месяца:

 Fri Aug 29 04:31:11 BST 1997

где в настоящее время пн 4 августа 04:31:11 BST 1997.

Команда:

 date 0613162785

устанавливает дату в «13 июня 1985 года, 16:27».

 date "+%m%d%H%M%Y.%S"

может использоваться на одном аппарате для распечатки даты, подходящей для установки на другом.

Команда:

 date 1432

устанавливает время 2:32 вечера, без изменения даты.

Наконец команда:

 date -j -f "%a %b %d %T %Z %Y" "`date`" "+%s"

может использоваться для анализа выходных данных по дате и выражения их во времени эпохи.

4

Что касается пользовательских форматов ввода и вывода, проверьте dateutils. Он предоставляет команду dadd для вычисления интервала дат Дата (плюс | минус):

$ dadd -i '%B %d %Y' 'November 1 2012' +3w
2012-11-22
$ dadd 2012-11-22 -3w -f '%B %d %Y'
November 01 2012

Опция -i|--input-format работает во всех инструментах и поддерживает большинство strptime(3) . То же самое для опции -f|--format .

Отказ от ответственности: я являюсь автором набора инструментов.

4

Как говорит Zoredache, вы можете легко достичь этого, используя любой язык программирования сценариев.

Вот пример в Ruby

 > irb
 1.9.3-p286 :001 > require 'date'
  => true
 1.9.3-p286 :014 > Date.new(2012,11,1) - Date.new(2012,1,2)                                                                                                                                                                                                                    
  => (304/1) 
 1.9.3-p286 :015 > Date.new(2012,11,1) + 10
  => #<Date: 2012-11-11 ((2456243j,0s,0n),+0s,2299161j)> 
 1.9.3-p286 :016 > Date.new(2012,11,1) - 205
  => #<Date: 2012-04-10 ((2456028j,0s,0n),+0s,2299161j)> 

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .