Jak uzyskać bieżącą datę / godzinę w formacie DD / MM / RRRR GG: MM?

116

Jak mogę uzyskać bieżącą datę i godzinę w DD/MM/YYYY HH:MMformacie, a także zwiększyć miesiąc?

anonimowy
źródło

Odpowiedzi:

185

Formatowanie można zrobić w ten sposób (założyłem, że masz na myśli HH: MM zamiast HH: SS, ale łatwo to zmienić):

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

Zaktualizowano dla zmiany biegów:

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"

Przy okazji musisz to zrobić require 'date'.

Michael Kohl
źródło
tak, masz rację, mam na myśli hh: mm, i bardzo dziękuję za odpowiedź
anonimowy
ale jak mogę zwiększyć miesiąc?
anonimowy,
Sprawdź, czy możesz użyć tego klejnotu rubygems.org/gems/formatted_times
ravi1991
Konwersja na łańcuch, a następnie analiza nie jest idealna.
Chuck Batson,
1
@ChuckBatson Chodziło o przesuwanie, a nie sugestia, że ​​to najlepszy sposób na zdobycie Dateprzedmiotu. W każdym razie, potraktowałem twój komentarz jako okazję do ostatecznego zaktualizowania tej odpowiedzi dla aktualnych wersji Rubiego.
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"
Lars Haugseth
źródło
1
Uważam to za znacznie prostsze i bardziej czytelne niż przyjęte rozwiązanie.
skagedal
7
time = Time.now.to_s

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

aby zwiększyć przyrost miesiąca użyj operatorów << >>

przykłady

datetime_month_before = DateTime.parse(time) << 1



datetime_month_before = DateTime.now << 1
Fivell
źródło
4

Na datę:

#!/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

Powyższe spowoduje wyświetlenie np. 10/01/15

I na czas

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

Powyższe wyświetli na przykład 11:33

Następnie, aby to złożyć, dodaj na końcu:

puts date + " " + time
joe_young
źródło