2013-12-23 132 views
0

我試圖計算從1月1日到同一年的給定日期的天數。對於UNIX命令 -d選項不能正常工作在UNIX中計算給定日期的天數

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

我使用這個script但太長。 有沒有簡單的方法來計算一個天的紐約?

編輯 結果腳本:

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

是'日期「+%j''有用嗎? – mpez0

+1

舊的/ vendor unix系統並不總是支持'-d'選項,因爲您收到的使用信息似乎表明。您可能會發現支持'-d'的gnu-date實用程序安裝在備用目錄中。可能有助於添加您正在使用的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)' 

對於一個特定的日子,如2月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