0

Ruby on Railsプロジェクトに機能があります。タスク名と期日を指定して特定のタスクを作成できます。作成後、タスクの期日が表示されます。

タスクを作成すると、タスク名と期日が次のようにデータベースに保存されます。

task_name: 作業中、予定日: 2013-05-15 11:06:00

それらはデータベースに正しく保存されます。ただし、タスク情報を表示すると、期限は常に 2 時間遅れます。

2013-05-15 11:06:00 の代わりに 2013-05-15 13:06:00 が表示され、以下のような関連コードが表示されます

l(assigned.due_at.localtime, :format => :mmddhhss)

何が何だかわからない

 l()

関数が使用されます。時間を正しく設定する方法。

4

2 に答える 2

2

l() メソッドは、特定のタイムゾーンの時間をローカライズしています。

私はスペインにいるので:

l(Time.now) # I18n.l(Time.now) if you are testing trough the console

出力する必要があります:

"martes, 07 de mayo de 2013 12:16:38 +0200"

文字列の末尾にある +0200 を見てください。これは、「UTC 時間から 2 時間足す」という意味です。UTC 時間は、以前はグリニッジ時間として知られていた世界時です。

したがって、UTC 時間を使用してデータを保存し、UTC から +2 時間のタイムゾーン時間を表示しているようです。アプリケーションにどのタイムゾーンを定義しましたか?

于 2013-05-07T10:22:26.593 に答える
0

strftime()日付/時刻を好きなようにフォーマットできるように、ユーザーを使用できます。これを参照strftime()として使用できます

于 2013-05-07T10:36:46.923 に答える