2013-12-23 1 views
0

Я попытался рассчитать количество дней с 1 января до указанной даты в том же году. Опция -d для команды UNIX не работаетРасчет количества дней, указанных в UNIX

date -d 
date: illegal option -- d 
Usage: date [-u] [+format] 
     date [-u] [mmddhhmm[[cc]yy]] 
     date [-a [-]sss.fff] 

Я использую этот script, но слишком долго. Есть ли простой способ рассчитать количество дней?

EDIT Результат сценария:

$ ksh datecalc -a 2013 2 5 - 2013 1 1 
$ 35 
+2

является 'дата«+% j'' полезным? – mpez0

+1

Старые/венгерские системы unix не всегда поддерживают параметр '-d', поскольку сообщение об использовании, которое вы получаете, похоже, указывает. Вы можете обнаружить, что утилита gnu-date, которая поддерживает '-d', установлена ​​в альтернативном каталоге. Может помочь добавить тег, для которого вы используете Unix. Удачи. – shellter

ответ

1

ОК так что это может быть немного надуманным, но MySQL клиент (или другие клиенты БД) может пригодиться для этого, поскольку они надежны и хорошо документированные функции даты.

$ mysql ..... --silent -e "select datediff('2013-02-05', '2013-01-01') from dual;" 

35 

$ 

где ..... являются вашими вариантами подключения.

+0

Я использую базу данных Informix. Я решил это с помощью этого: (http://www.prolifics.com/docs/panther4.6/html/dev_html/progjpl.htm#247139) – Cikson

0

Если у вас установлен Perl, вы можете сделать:

perl -MPOSIX=strftime -le 'print strftime("%j",localtime)' 

Для конкретного дня, например, 5 Фев:

perl -MPOSIX=strftime -le ' 
    @d=(2013,2,5); 
    print strftime("%j",0,0,0,$d[2],$d[1]-1,$d[0]-1900) 
' 
036 
+0

У меня установлен perl v5.6.1 на моей машине, но когда я запускаю Результат команды: perl: Команда не найдена. Когда я запускаю результат скрипта, это: синтаксическая ошибка в строке number_of_days.pl 7, рядом с «-le» Выполнение number_of_days.pl отменено из-за ошибок компиляции. – Cikson

+0

Что вам говорит 'type -a perl'? –

+1

@Cikson: Что находится в number_of_days.pl? '-le' указан как параметр командной строки, а не внутри perl-скрипта. – cdarke