LoginSignup
1
0

More than 3 years have passed since last update.

デフォルトで今日の日付日時を表示する方法:秒以下を除去

Last updated at Posted at 2020-09-16

【概要】

1.結論

2.どのように記載するか

3.ここから学んだこと

1.結論

(任意の変数).toISOString().slice(0, -8)を使用する

2.どのように記載するか

前提として、

new.html.erb
<%= f.datetime_field :study_date ,id:"datetime_field"%>

で設定しています。

datetime_fieldメソッドは
=***.toISOString().slice(0, -8);をすることにより、
今日の年、月、時間、分までをデフォルトに表記することができます。

***.html.erb
<script>
  var today_time = new Date();
   now.setMinutes(today_time.getMinutes() - now.getTimezoneOffset()); #----❶
    document.getElementById('datetime_field').value = today_time.toISOString().slice(0, -8); #----❷
</script>

と記載しました。
html.erbに記述しておりますので"script"で囲み、更新するとconsoleで変数の定義がされているとエラーがでたのでvarにしています。❶❷までについては下記のURLで触れられている通り表示される時刻はUTC表記(❷)になるので、前もってUTCの差分(❶)に合わせています。

参考にしたURL:
HTML5 に現在時刻を設定するには

3.ここから学んだこと

自分は最初に

****.html.erb
<f.date_field :****, value:Time.now.strftime("%Y-%m-%d")>

を使用していました。value:Time.now.strftime("%Y-%m-%d")を入れてあげるとページが表示された段階で現在の日付が自動で入力されます。

かなり参考にしたURL:
Railsのdate_fieldにてデフォルト値を設定する

しかし、f.datetime_fieldの場合は、valueに上記のものを入れたり、Time.nowにすると

The specified value "2020 9/16 12:05" does not conform to the required format.  The format is "yyyy-MM-ddThh:mm" followed by optional ":ss" or ":ss.SSS".

と出てしまいました。
基準通りの記述を満たせていないということで、認識されていないということでした。なので上記の方法で行いましたが、slice(0,-1)をあまり理解できていないことに気づきました。slice(start,end)はstartから始まる文字~endの手前の数分だけを取り出すので、上記のように書くことで”ss.SSS(秒以下の時間)”を省くことができました。

参考にしたURL:
sliceメソッド


1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0