0

Linux v2.4/Bash v3.2/GNU utils/date コマンド バージョン 5.0

日付コマンドに苦労しています。BASH アプリケーションでは、ユーザーは日付と時刻を別々に設定できるため、日付と時刻の変数が別々になります。さらに、これらの変数は再結合されますが、これは date コマンドには適していないようです: 別の日付が返されます。時間は同じですが。テスト コード:

#!/bin/bash
dnow1="$(date)"
echo "1 $dnow1"                             # --> Sat Sep 14 16:31:48 EDT 2013
#split date and time
dldate="$(date -d "$dnow1" +"%d-%m-%Y")"
echo "2 $dldate"                            # --> 14-09-2013
dltime="$(date -d "$dnow1" +"%H:%M:%S")"
echo "3 $dltime"                            # --> 16:31:48
#try to re-combine date and time
string="${dldate} ${dltime}"
echo "4 $string"                            # --> 14-09-2013 16:31:48
dnow2="$(date -d "$string")"
echo "5 $dnow2"                             # --> Thu Mar 5 16:31:48 EST 2020

ここで何かが欠けているに違いありません。誰でも私を啓発できますか?ありがとう!

注: 私はリソースがほとんどないオリジナルの XBOX を使用しているため、Python などの他のソリューションを使用する余地はありません。とにかく私は「バシスト」なので、BASHに違いありません!

編集:修正された時間形式。ありがとうマット。「$(....)」に関しては、可能な限り二重引用符を付けるようにしています。

4

3 に答える 3

1

日付を取得するときは、代わりに次の形式を使用します。

#split date and time
dldate="$(date -d "$dnow1" +"%Y-%m-%d")"
于 2013-09-14T14:21:21.137 に答える
0

まず第一に、使用は流行で-dは機能しません14-09-2013.1つのコマンドで簡単に日付と時刻を設定し、変数に入れることができます。たとえば、シェルで以下を試してみてください。その後、シェルスクリプトに入れることができます。

date --date="Feb 2 2014 13:12:10"  
Sun Feb  2 13:12:10 PST 2014
于 2013-09-14T09:56:39.173 に答える
0

GNU日付マニュアルより

date コマンドの出力は、言語の問題だけでなく、'IST' のようなタイム ゾーン項目に標準的な意味がないため、必ずしも日付文字列として受け入れられるとは限りません。date を使用して後で解析する日付文字列を生成する場合は、言語に依存せず、'UTC' と 'Z' 以外のタイム ゾーン項目を使用しない日付形式を指定します。

于 2013-09-14T09:58:42.853 に答える