Time の usec を 0 で指定する (Rails)
Ruby Ruby on Rails
Published: 2020-02-16

やったこと

時間を取り扱う時、usec を 0 でセットする方法を試します。

例えば、rspec など自動テストをする時

  • MySQL に保存する
  • 値を取り出す

とした場合、usec が削り落とされ 0 になってしまうことがあります。

確認環境

$ ruby --version
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin17]

$ rails --version
Rails 5.2.3

調査

始めは、usec が設定されていますが、change を使うことで 0 に設定できました。

$ rails c
Running via Spring preloader in process 42292
Loading development environment (Rails 5.2.3)
irb(main):001:0> a = Time.current
=> Sun, 16 Feb 2020 01:19:08 JST +09:00
irb(main):002:0> a.usec
=> 87388
irb(main):003:0> a.change(usec: 0).usec
=> 0

参考