2

date コマンドを使用して前月を取得しようとしています。5 月 31 日に実行すると、5 月 1 日に返されます。4 月に何かを期待していました。これを行うより良い方法はありますか?

> date --version
 date (GNU sh-utils) 2.0
Written by David MacKenzie.

Copyright (C) 1999 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
> date
Fri May 31 13:29:08 EDT 2013
> date --date='last month'
Wed May  1 13:29:15 EDT 2013

@fvuからのコメントごとに、これを試しました:

> date --date='first day last month'
Thu May  2 14:00:43 EDT 2013
> date --date='first day next month'
Tue Jul  2 14:00:52 EDT 2013

これはうまくいきませんでした。これはしましたが:

>date --date='last day last month'
Tue Apr 30 14:06:28 EDT 2013

月の定義が必要だと思います

4

1 に答える 1

1

「先月」とは前月ではなく、30日前のことだと思います。

date --date="$(date +%Y-%m-15) -1 month" 

-1か月は-30日と同じであるため、前月を検出するために与えられた情報の例です

于 2013-05-31T19:48:03.603 に答える