Я пытаюсь сделать самые простые вещи, преобразовать дату в другой формат даты, но я не могу этого сделать, поскольку мои знания в рубине практически равны нулю.

Я попытался прочитать это и попробовал все из возможных версий .to_formatted_s(), но ни одна из них не работает. Кажется, что время всегда остается, несмотря ни на что. Поскольку эта дата берется не из date.new(), а из существующего свойства объекта, я предполагаю, что это причина, по которой .to_formatted_s() не работает, как в примере в документации. Хотя я мог быть ужасно неправ.

Как преобразовать этот формат даты:

2015-07-01 01:59:59 +0200

К этому:

2015-07-01

Мои попытки были:

  // inv.end is "2015-07-01 01:59:59 +0200"

  inv.end.to_formatted_s(:db)
  inv.end.to_s(:db)
  inv.end.to_formatted_s(:iso8601)

Все это выдало 2015-06-30 23:59:59.

Что я делаю не так?

0
Chrillewoodz 16 Окт 2015 в 12:54

2 ответа

Лучший ответ
require 'date'
DateTime.parse("2015-07-01 01:59:59 +0200").strftime('%Y-%m-%d')
1
max 16 Окт 2015 в 10:05

Приведенный выше ответ правильный.
Если вы хотите многократно повторять один и тот же формат даты, создайте файл в инициализаторах и напишите приведенный ниже код:
класс ActiveSupport :: TimeWithZone
def my_format (параметры = {})
strftime ('% m-% d-% Y')
конец
конец

& после объекта datetime просто напишите my_format как @ user.updated_at.my_format

1
Chakreshwar Sharma 16 Окт 2015 в 12:38