2017-01-16 7 views
-1

私はbashスクリプトを書いています: パラメータは02:00に設定されています。 PARAM = 02:00。bashシェルでのHH:MMの解析?

日付はYYYYYMMDDHHMMSSの形式です(例:SAMPLE_DATE = 20160101000000)。

このPARAMをこのSAMPLE_DATEに追加するにはどうすればよいですか?

例:SAMPLE_DATE + PARAM =(20160101000000 + 02:00)=私は分を持って、私はこれまでのこれらの分を追加した日付のAPIを使ってPARAMを分割している20160101020000.

が、他があるだろうこれにはより良いオプションがありますか?

+0

[あなたが試したこと](http://whathaveyoutried.com/)をお知らせください。私たちの多くはここであなたの工芸品を改善するのに役立ちますが、短期間の無償のプログラミングスタッフとしての幸せはありません。これまでの作業を[MCVE](http://stackoverflow.com/help/mcve)に見せて、あなたが期待していた結果と得られた結果を見てください。 – ghoti

+0

私は、このPARAM 02:00から分を派生させ、これらの分を日付(20160101000000)で追加して日付(20160101020000)を作成するオプションの1つとしてcutを使用しています。しかし、私はこのアプローチが嫌いでした。私はこの02:00を日付(20160101000000)に追加する他のオプションを探しています。ありがとう! –

+0

あなたは質問を更新する必要があります。コメントは*ひどい*フォーマットを提供し、あなたの質問は自己完結型でなければなりません。これまでの作業を示すために[MCVE](http://stackoverflow.com/help/mcve)を作成してみてください。 – ghoti

答えて

1

あなたの入力フォーマットはGNU dateで認識されないので、YYYMMDDパーツのみを使用するように切り捨て、HH:MMパーツを追加することで、変更する必要があります。出力フォーマットオプションを使用して、必要なものを入手することができます。

$ D=20160101000000 
$ PARAM=02:00 
$ date -d "${D:0:8} $PARAM" +"%Y%m%d%H%M%S" 
20160101020000 
+0

彼の入力フォーマットは 'date'によって非常によく認識できます。高度な入力フォーマット処理については、['-f'オプション](https://www.freebsd.org/cgi/man.cgi?query=date)を参照してください。 (そして、この質問は[tag:unix]でタグ付けされていて、[tag:linux]ではないことに注意してください) – ghoti

+0

ありがとうございました!これは助けにはならない、私はもっと試してみましょう! –

+1

@ghoti '-f'は、POSIXやGNUの' date'でサポートされていないBSD拡張です。 – chepner

関連する問題