Ruby - DateTime для базы данных - PullRequest
       5

Ruby - DateTime для базы данных

6 голосов
/ 05 января 2010

У меня есть столбец базы данных с синтаксисом «0000-00-00 00:00:00». В PHP я бы сделал дата ('Y-m-d H: i: s');

В Ruby я делаю

require 'date'
now = DateTime::now()
puts "#{now.year()}-#{now.mon()}-#{now.mday()} #{now.hour()}:#{now.min()}:#{now.sec()}"

Результат: «2010-1-5 10: 16: 4» Это не хорошо. Как я могу создать «временную строку» в формате «0000-00-00 00:00:00»?

Большое спасибо заранее и наилучшими пожеланиями

Ответы [ 5 ]

9 голосов
/ 05 января 2010

Вы можете форматировать даты как в PHP благодаря встроенному классу Time, см. Документацию там .

Это дало бы для вашего случая:

t = Time.now
puts t.strftime("%Y-%m-%d %H:%M:%S")
3 голосов
/ 08 мая 2015

iso8601 метод также может быть полезен:

>> Time.now.utc.iso8601
=> "2015-05-08T16:45:22Z"
2 голосов
/ 07 января 2015

немного короче

t = Time.now
puts t.strftime("%F %T")

=> "2015-01-06 14:01:05" 
1 голос
/ 22 мая 2017

Если вы используете Rails / ActiveSupport, то to_s (: db) будет кратчайшим путем:

Time.now.to_s(:db)
=> "2017-05-22 11:14:40"
0 голосов
/ 06 мая 2016

ActiveRecord, как правило, хранит дату / время в формате UTC, поэтому использование utc сделает ваши данные более согласованными

t = Time.now.utc
puts t.strftime("%F %T")

=> "2016-05-06 19:05:01"
...