Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

@taka_no_okapi

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

【概要】

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メソッド


Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
0
Help us understand the problem. What are the problem?