2010-01-05 29 views
5

Tôi có cột Cơ sở dữ liệu với cú pháp "0000-00-00 00:00:00". Trong PHP, tôi sẽ làm ngày ('Y-m-d H: i: s');Ruby - Ngày giờ cho Cơ sở dữ liệu

Trong Ruby, tôi làm

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

Kết quả là: "2010/01/05 10: 16: 4" Đó là không ổn. Làm thế nào tôi có thể tạo một "timestring" với định dạng "0000-00-00 00:00:00"?

Thanks a lot trước & Trân trọng

+0

Xem thêm http://stackoverflow.com/questions/1230296/how-do-i-format- a-date-to-mm-dd-yyyy-in-ruby – glmxndr

Trả lời

9

Bạn có thể định dạng ngày như trong PHP nhờ được xây dựng trong Time lớp, xem tài liệu there.

này sẽ cung cấp cho đối với trường hợp của bạn:

t = Time.now 
puts t.strftime("%Y-%m-%d %H:%M:%S") 
+0

cảm ơn rất nhiều sự giúp đỡ của bạn! – Tim

2

Một chút ngắn hơn

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

=> "2015-01-06 14:01:05" 
2

phương pháp ISO8601 có thể hữu ích cũng:

>> Time.now.utc.iso8601 
=> "2015-05-08T16:45:22Z" 
0

ActiveRecord có xu hướng lưu trữ ngày/lần UTC, do đó, sử dụng utc sẽ làm cho dữ liệu của bạn trở nên nhất quán hơn

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

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

Nếu bạn đang sử dụng Rails/ActiveSupport sau đó to_s(:db) sẽ là con đường ngắn nhất:

Time.now.to_s(:db) 
=> "2017-05-22 11:14:40" 
Các vấn đề liên quan