4

日付を 1 つの形式に変換する最も簡単な方法は何ですか?

2008-06-01

別の形式の日付に、たとえば

2008 年 6 月 1 日(日)

重要な部分は実際には「太陽」です。なぜなら、デイネームによっては、非決定論的な方法で他のことをいじる必要があるかもしれないからです。GNU bash、バージョンを実行しています3.2.17(1)-release (i386-apple-darwin9.0)

[背景: コマンド ラインから実行したい理由は、本当に必要なのは、TextMate コマンドに書き込むことです... textMate で常に実行しなければならない面倒なタスクです。]

4

6 に答える 6

8
$ date -d '2005-06-30' +'%a %F'
Thu 2005-06-30

man dateその他の形式オプションについては、を参照してください。

このオプションは Linux では使用できますが、Darwin では使用できません。Darwin では、代わりに次の構文を使用できます。

date -j -f "%Y-%m-%d" 2006-06-30 +"%a %F"

-f 引数は入力形式を指定し、+ 引数は出力形式を指定します。

以下の別のポスターで指摘されているように、ローカリゼーションの問題を回避するには、%a ではなく %u (数値の曜日) を使用することをお勧めします。

于 2008-11-10T22:09:25.763 に答える
2

date(1)マンページを読むと、次のことが明らかになります。

-j   日付を設定しようとしません。これにより、 -f フラグを使用できますある日付形式を別の日付形式に変換する
     + オプションに加えて。
于 2008-11-10T22:24:57.963 に答える
1

そのsgmをありがとう。だから私はそれを参照するために戻ってくることができるように -

date -j -f "%Y-%m-%d" "2008-01-03" +"%a%e %b %Y"
            ^               ^        ^
            parse using     |        output using
            this format     |        this format
                            |
                       date expressed in
                       parsing format

Thu 3 Jan 2008

ありがとう。

于 2008-11-10T22:36:00.470 に答える
0

曜日を取得するだけの場合は、文字列を一致させないでください。ロケールが変更されると、それは壊れます。形式は%uあなたに日番号を与えます:

 $ date -j -f "%Y-%m-%d" "2008-01-03" +"%u"
 4

そして確かに、それは木曜日でした。その数値を使用して、プログラムにある配列にインデックスを付けることも、数値自体を使用することもできます。

詳細については、日付とstrftimeのマニュアルページを参照してください。ただし、OS Xの日付のマンページは、機能するこれらのオプションがリストされていないため、間違っています。

于 2008-11-10T22:47:23.567 に答える
0
date -d yyyy-mm-dd

フォーマットをより細かく制御したい場合は、次のように追加することもできます。

date -d yyyy-mm-dd +%a

あなたが欲しいと言う太陽の部分を手に入れるだけです。

于 2008-11-10T22:04:30.860 に答える
0
date -d ... 

使用法エラーが発生するため、それをカットしていないようです:

usage: date [-jnu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ... 
            [-f fmt date | [[[mm]dd]HH]MM[[cc]yy][.ss]] [+format]

私は GNU bash バージョン 3.2.17(1)-release (i386-apple-darwin9.0) を実行しています。

-d dst  Set the kernel's value for daylight saving time.  If dst is non-
         zero, future calls to gettimeofday(2) will return a non-zero for
         tz_dsttime.
于 2008-11-10T22:13:03.447 に答える