Tôi chắc chắn có một lớp lót đơn giản thanh lịch tốt trong Ruby để cung cấp cho bạn số ngày trong một tháng nhất định, tính theo năm, chẳng hạn như "Tháng Hai năm 1997". Nó là gì?Làm thế nào để có được số ngày trong một tháng nhất định trong Ruby, chiếm một năm?
Trả lời
này là việc thực hiện từ ActiveSupport (một chút điều chỉnh):
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
Làm thế nào về:
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)
Bạn cũng có thể muốn xem xét Time::days_in_month trong Ruby on Rails.
Bạn có thể giải thích những gì làm cho def này? Bởi vì tôi thích nhưng tôi muốn hiểu –
@Mike Wade, điều này giả định rằng chúng tôi biết tháng 12 có 31 ngày. Còn nếu chúng ta thậm chí không biết điều đó? – nemesisfixx
Tháng 12 sẽ luôn có 31 ngày. –
Nếu bạn đang làm việc trong Rails, rất có thể bạn sẽ nhận được hamstrung cuối cùng nếu bạn chuyển đổi giữa các Time
, Date
, và DateTime
, đặc biệt là khi nói đến giao dịch với khu UTC/thời gian, tiết kiệm ánh sáng ban ngày, và những thứ tương tự. Kinh nghiệm của tôi là tốt nhất để sử dụng Time
và gắn bó với nó ở mọi nơi.
Vì vậy, giả sử bạn đang sử dụng lớp Time Rails, có hai lựa chọn tốt, tùy thuộc vào bối cảnh:
Nếu bạn có một tháng
m
và nămy
, sử dụng phương thức lớp trênTime
:days = Time.days_in_month(m, y)
Nếu bạn có một đối tượng Time
t
, sạch hơn để hỏi số ngày của ngày cuối cùng của tháng:days = t.end_of_month.day
Sử dụng Time.days_in_month(month)
nơi month = 1
cho tháng Một, 2
cho tháng hai, vv
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)
Đây phải là câu trả lời được chấp nhận. – steenslag
btw Tôi không cần yêu cầu Ngày trong chương trình chỉ có ruby của tôi. –
điều chỉnh lại các đầu vào cho định dạng khác
def days_in_a_month(date = "2012-02-01")
date.to_date.end_of_month.day
end
như đường ray 3.2 ... có một được xây dựng trong phiên bản: http://api.rubyonrails.org/classes/Time.html#method-c-days_in_month
(than ôi, nó xuất hiện sau câu trả lời này, trong đó có folks trên một tăng dài)
Tôi nghĩ rằng đó là cách đơn giản nhất để có được nó
def get_number_of_days(date = Date.today)
Date.new(date.year, date.month, -1).mday
end
Time.now.end_of_month.day
- cho tháng hiện tại
Date.parse("2014-07-01").end_of_month.day
- sử dụng ngày đầu tiên trong tháng.
Phụ thuộc vào ActiveSupport
Bạn cũng có thể thực hiện 'Date.today.end_of_month.day' – 8bithero
Trong Rails dự án cho ngày hiện tại
Time.days_in_month(Time.now.month, Time.now.year)
Đối ngày bất kỳ t đó là thể hiện của Time
Time.days_in_month(t.month, t.year)
hoặc
t.end_of_month.day
.
Nếu bạn có UTC giây, bạn cần phải nhận được một thể hiện của Time đầu tiên
Time.at(seconds).end_of_month.day
Một cách đơn giản sử dụng Date
:
def days_of_month(month, year)
Date.new(year, month, -1).day
end
- 1. Trừ một số giờ, ngày, tháng hoặc năm nhất định từ ngày
- 2. Làm thế nào để chuyển đổi số ngày nhất định thành năm, tháng và ngày trong MySQL?
- 3. Javascript: tính số ngày trong tháng cho một năm nhất định
- 4. Làm cách nào để nhận được số ngày trong tháng cho tháng và năm cụ thể?
- 5. Làm thế nào để tính toán bao nhiêu năm trôi qua kể từ một ngày nhất định trong Ruby?
- 6. Làm thế nào để có được ngày trong năm trong ruby?
- 7. Định dạng ngày trong ngày, ngày tháng, năm
- 8. Chọn số ngày mà một bản ghi có mặt trong một năm/tháng
- 9. Làm thế nào để có được ngày, tháng, năm trong jQuery UI datepicker?
- 10. Làm thế nào để có được tất cả các ngày (tháng, ngày và năm) giữa hai ngày trong python?
- 11. Làm cách nào để có được số ngày trong một tháng nhất định bằng cách sử dụng Joda-Time?
- 12. Java: Làm thế nào để tôi có được ngày của x ngày trong một tháng (ví dụ: Thứ hai thứ ba trong tháng 2 năm 2012)
- 13. Lấy Năm/Tháng/Ngày từ một ngày giờ trong php?
- 14. Làm thế nào để biến các cột năm, tháng và ngày riêng biệt thành một ngày?
- 15. Số ngày trong năm nhất định sử dụng SDK iPhone?
- 16. tạo một phạm vi tháng giữa hai ngày trong ruby
- 17. Làm thế nào để đánh giá sự khác biệt về ngày trong năm, tháng và ngày (ruby)?
- 18. Làm thế nào để có được ngày đầu tiên của một số tuần nhất định trong PHP (đa nền tảng)?
- 19. Số ngày tháng trong năm jQuery hiển thị
- 20. nhóm theo năm, tháng, ngày trong một SQLAlchemy
- 21. PHP. Làm thế nào để có được một sự kiện định kỳ hai tháng một lần?
- 22. Làm cách nào để có được số tháng (không phải tên tháng) từ một ngày trong SQL Server?
- 23. Làm thế nào để có được ngày cuối cùng của một tháng cụ thể với JodaTime?
- 24. tính số tuần trong một năm nhất định
- 25. Làm thế nào để trích xuất năm, tháng, ngày, giờ và phút từ một DateTimeField?
- 26. bằng Python, Làm thế nào tôi có thể chuyển đổi một chuỗi thành một đối tượng ngày tháng và nhận được năm, tháng và ngày riêng biệt?
- 27. Định dạng ngày giờ Ngày trong năm
- 28. Django: Nhóm theo ngày (ngày, tháng, năm)
- 29. Làm thế nào để tôi nhận được ngày hôm nay trong một năm trước trong C#?
- 30. làm thế nào để nhận được cùng một ngày của tháng tiếp theo của một ngày nhất định trong python sử dụng datetime
Btw, ban đầu thực hiện trong mô-đun Time. –
siêu ngày tại thời điểm này. nhìn vào một số câu trả lời khác. – drewish
Nếu bạn đang sử dụng đường ray, @mkosma có câu trả lời đơn giản hơn. –