Jestem pewien, że istnieje dobry prosty elegancki, jednolinijkowy Ruby, który podaje liczbę dni w danym miesiącu, z uwzględnieniem roku, np. "Luty 1997". Co to jest?Jak uzyskać liczbę dni w danym miesiącu w Rubim, rozliczając się za rok?
Odpowiedz
Jest to realizacja od ActiveSupport (trochę dostosowany):
COMMON_YEAR_DAYS_IN_MONTH = [nil, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
def days_in_month(month, year = Time.now.year)
return 29 if month == 2 && Date.gregorian_leap?(year)
COMMON_YEAR_DAYS_IN_MONTH[month]
end
Jak o:
require 'date'
def days_in_month(year, month)
(Date.new(year, 12, 31) << (12-month)).day
end
# print number of days in Feburary 2009
puts days_in_month(2009, 2)
Można też spojrzeć na Time::days_in_month w Ruby on Rails.
Czy możesz wyjaśnić, co to za def? Ponieważ lubię, ale chcę zrozumieć –
@Mike Wade, to zakłada, że wiemy, że grudzień ma 31 dni. A może nawet tego nie wiemy? – nemesisfixx
Grudzień zawsze będzie miał 31 dni. –
Jeśli pracujesz w Rails, są szanse, dostaniesz hamstrung ostatecznie po przełączeniu między Time
, Date
i DateTime
, zwłaszcza jeśli chodzi o czynienia ze strefami UTC/godzina, oszczędności światło dzienne, i tym podobne. Moje doświadczenie było najlepsze, aby używać Time
i trzymać się go wszędzie.
Więc zakładając, że używasz klasy szynach czas, istnieją dwie dobre opcje, w zależności od kontekstu:
Jeśli masz miesiąc
m
i roky
, należy użyć metody klasy naTime
:days = Time.days_in_month(m, y)
Jeśli masz czas
t
obiekt, czystsze zapytać numer dnia ostatniego dnia miesiąca:days = t.end_of_month.day
Zastosowanie Time.days_in_month(month)
gdzie month = 1
do stycznia 2
dla lut itp
require 'date'
def days_in_month(year, month)
Date.new(year, month, -1).day
end
# print number of days in February 2012
puts days_in_month(2012, 2)
To powinna być zaakceptowana odpowiedź. – steenslag
btw Nie musiałem wymagać daty w programie "Tylko mój rubin". –
przeglądu wejście do innego formatu
def days_in_a_month(date = "2012-02-01")
date.to_date.end_of_month.day
end
jako szyn 3,2 ... istnieje wersja wbudowana: http://api.rubyonrails.org/classes/Time.html#method-c-days_in_month
(niestety, to pokazuje się po tej odpowiedzi, która zabierze ludzi na długiej wędrówce)
Myślę, że to najprostszy sposób, aby to
def get_number_of_days(date = Date.today)
Date.new(date.year, date.month, -1).mday
end
Time.now.end_of_month.day
- za bieżący miesiąc
Date.parse("2014-07-01").end_of_month.day
- używać daty pierwszego dnia w miesiącu.
Zależy ActiveSupport
projektMożna również zrobić "Date.today.end_of_month.day" – 8bithero
w szynach dla bieżącej daty
Time.days_in_month(Time.now.month, Time.now.year)
Dla dowolnej daty t który jest instancją Czas
Time.days_in_month(t.month, t.year)
lub
t.end_of_month.day
.
Jeśli masz UTC sekund, trzeba uzyskać instancję raz pierwszy
Time.at(seconds).end_of_month.day
Prostym sposobem korzystania Date
:
def days_of_month(month, year)
Date.new(year, month, -1).day
end
- 1. Jak wyświetlić liczbę dni w miesiącu przez określony rok?
- 2. Określić liczbę dni w miesiącu
- 3. Jak znaleźć liczbę dni w bieżącym miesiącu
- 4. Wybierz liczbę dni, w których rekord jest obecny w danym roku/miesiącu.
- 5. Jak uzyskać wszystkie daty w danym miesiącu w języku C#
- 6. Javascript: obliczyć liczbę dni w miesiącu dla danego roku
- 7. Jak uzyskać listę dni tygodnia w miesiącu?
- 8. jak sprawdzić liczbę dni w miesiącu w mysql
- 9. Jak obliczyć liczbę dni w każdym miesiącu w php
- 10. Jak uzyskać liczbę tygodni w miesiącu
- 11. Jak uzyskać liczbę dni w miesiącu z danego miesiąca i roku?
- 12. Liczba dni w bieżącym miesiącu za pomocą iPhone SDK?
- 13. Znajdź liczbę dni tygodnia/weekendów w danym zakresie dat
- 14. pobierz liczbę plików zmodyfikowanych w zeszłym miesiącu
- 15. Liczba dni w danym roku przy użyciu iPhone SDK?
- 16. Jak mogę uzyskać liczbę dni w roku przy użyciu JodaTime?
- 17. Liczba szyn tygodniowych w miesiącu
- 18. Jakikolwiek sposób na znalezienie liczby dni w miesiącu za pomocą Celu C?
- 19. Jak uzyskać wartości za każdy dzień w miesiącu
- 20. Jak obliczyć liczbę dni w okresie?
- 21. Jak dodać liczbę dni w postgresql datetime
- 22. Jak uzyskać wcześniejszy rok za pomocą PHP
- 23. Znajdź wszystkie dni w miesiącu z obiektem Data?
- 24. Uzyskaj wszystkie dni w dowolnym miesiącu z celem-c
- 25. Wyłącz miesiące w miesiącu/DatePicker
- 26. Jak znaleźć dynamicznie w przyszłym miesiącu i roku za pomocą momentu js w jQuery
- 27. Objective-C: Pierwsze liczbę dni w roku kalendarzowym
- 28. Liczba niedziel w bieżącym miesiącu
- 29. Jak uzyskać liczbę dni między dwoma datami celu-c
- 30. Zliczanie regularnych dni roboczych w danym okresie czasu
Btw, pierwotnie wprowadzone w module Czasu. –
super przestarzały w tym momencie. spójrz na niektóre z pozostałych odpowiedzi. – drewish
Jeśli używasz szyn, @mkosma ma prostszą odpowiedź. –