Как мне получить текущую дату / время в формате ДД / ММ / ГГГГ ЧЧ: ММ?

116

Как я могу получить текущую дату и время в DD/MM/YYYY HH:MMформате, а также увеличить месяц?

анонимный
источник

Ответы:

185

Форматирование может быть выполнено следующим образом (я предполагал, что вы имели в виду ЧЧ: ММ вместо ЧЧ: СС, но это легко изменить):

Time.now.strftime("%d/%m/%Y %H:%M")
#=> "14/09/2011 14:09"

Обновлено для переключения:

d = DateTime.now
d.strftime("%d/%m/%Y %H:%M")
#=> "11/06/2017 18:11"
d.next_month.strftime("%d/%m/%Y %H:%M")
#=> "11/07/2017 18:11"

Вам нужно require 'date'для этого, кстати.

Майкл Коль
источник
да, вы правы, я имею в виду чч: мм, и большое спасибо за ваш ответ
аноним
но как я могу увеличить месяц?
анонимный,
Проверьте, можете ли вы использовать этот драгоценный камень rubygems.org/gems/formatted_times
ravi1991
Преобразование в строку с последующим синтаксическим анализом не идеально.
Чак Бэтсон
1
@ChuckBatson Речь шла о смещении, а не о том, что это лучший способ получить Dateобъект. В любом случае, я воспринял ваш комментарий как возможность, наконец, обновить этот ответ для текущих версий Ruby.
Michael Kohl
25
require 'date'

current_time = DateTime.now

current_time.strftime "%d/%m/%Y %H:%M"
# => "14/09/2011 17:02"

current_time.next_month.strftime "%d/%m/%Y %H:%M"
# => "14/10/2011 17:02"
Ларс Хаугсет
источник
1
Я считаю это гораздо более простым и читаемым, чем принятое решение.
skagedal
7
time = Time.now.to_s

time = DateTime.parse(time).strftime("%d/%m/%Y %H:%M")

для увеличения месяца уменьшения используйте операторы << >>

Примеры

datetime_month_before = DateTime.parse(time) << 1



datetime_month_before = DateTime.now << 1
Fivell
источник
4

На дату:

#!/usr/bin/ruby -w

date = Time.new
#set 'date' equal to the current date/time. 

date = date.day.to_s + "/" + date.month.to_s + "/" + date.year.to_s
#Without this it will output 2015-01-10 11:33:05 +0000; this formats it to display DD/MM/YYYY

puts date
#output the date

Выше будет отображаться, например, 10.01.15.

И на время

time = Time.new
#set 'time' equal to the current time. 

time = time.hour.to_s + ":" + time.min.to_s
#Without this it will output 2015-01-10 11:33:05 +0000; this formats it to display hour and           minute

puts time
#output the time

Выше будет отображаться, например, 11:33.

Затем, чтобы собрать все вместе, добавьте в конец:

puts date + " " + time
joe_young
источник