Đừng bỏ qua phần 'ngày VÀ THỜI GIAN'.Cách tạo ngày và giờ ngẫu nhiên giữa hai ngày?
Trả lời
Time.at((date2.to_f - date1.to_f)*rand + date1.to_f)
Bạn sẽ nhận được đối tượng thời gian nằm giữa hai khoảng thời gian đã cho.
Tôi không biết về ruby nhưng tại sao bạn không chỉ tạo ra một số nguyên và sử dụng nó cùng với dấu thời gian? Sau đó, chỉ cần chuyển dấu thời gian sang định dạng mong muốn của bạn.
Tính chênh lệch trong ví dụ phút giữa hai ngày, tạo số ngẫu nhiên giữa 0 và số đó, và thêm số phút đó vào ngày đầu tiên.
Sử dụng time.to_i()
(xem lớp Time
) để chuyển đổi ngày thành số nguyên, ngẫu nhiên giữa hai giá trị đó, sau đó hoàn nguyên về thời gian và ngày với Time.at()
.
Bạn sẽ có thể tạo ngày/giờ ngẫu nhiên trong một phạm vi nhất định.
now = Time.now
a_day_ago = now - 60 * 60 * 24
random_time = rand(a_day_ago..now)
# with activesupport required
up_to_a_year_ago = rand(1.year.ago..Time.now)
đầu vào của bạn cần phải là lớp Time
, hoặc chuyển đổi thành một dù.
Bạn cũng có thể thực hiện một khoảng thời gian trong thời gian epoch và sau đó sử dụng Time#at
.
now = Time.now.to_i
minute_ago = (Time.now - 60).to_i
Time.at(rand(minute_ago..now))
Theo tôi, giải pháp này đẹp hơn nhiều so với hiện tại được chấp nhận bởi Evgeny. – severin
Một nhận xét nhỏ, mặc dù: '1.year.ago' chỉ hoạt động khi bạn có * activesupport * nạp ... – severin
Điểm tốt @severin. Tôi đã bao gồm mã để hỗ trợ có và không có activesupport được tải. Cũng đã thêm một ví dụ cho các khoảng thời gian epoch. –
Nếu bạn biết trung điểm và phạm vi bù đắp vào hai bên của trung điểm bạn có thể sử dụng đá quý ish của tôi: https://github.com/spilliton/ish
mid_date.ish(:offset => 60.days)
Sử dụng phương pháp rand()
.
require 'time'
t1 = Time.parse("2015-11-16 14:40:34")
t2 = Time.parse("2015-11-20 16:20:23")
puts rand(t1..t2)
Time.at(rand(Time.parse('some date').to_i..Time.now.to_i))
- 1. hiệu quả tạo ra một mẫu ngẫu nhiên của thời gian và ngày giữa hai ngày
- 2. Ngày, giờ, phút, giây giữa hai ngày
- 3. Tạo ngày giữa hai ngày
- 4. Làm thế nào để tạo ra ngày ngẫu nhiên giữa hai ngày bằng cách sử dụng php?
- 5. phương pháp Elegant để tạo mảng các ngày ngẫu nhiên trong vòng hai ngày
- 6. Cách tính giờ theo giờ giữa hai ngày trong iOS
- 7. Ngày giờ, Ngày giờ? và LINQ
- 8. Ngày và Ngày giờ
- 9. PostgreSQL: thay đổi ngày theo số ngày ngẫu nhiên
- 10. Tạo một ngày ngẫu nhiên trong Oracle với DBMS_RANDOM
- 11. Bắt tất cả Ngày giờ giữa hai 'Ngày giờ trong C#
- 12. Cách kiểm tra hai ngày giờ cho cùng một ngày?
- 13. Ngày giữa hai ngày trong Python
- 14. Tạo ngày giờ trong Rails bằng tháng, ngày và năm
- 15. Cách thực hành tốt nhất để nhận được một DateTime ngẫu nhiên giữa hai ngày tháng là gì?
- 16. Nhận khoảng giây giữa hai ngày giờ trong PHP?
- 17. Số ngẫu nhiên giữa hai phạm vi
- 18. tính ngày chủ nhật giữa hai ngày
- 19. Java, Tính số ngày giữa hai ngày
- 20. Ngày giờ mới() và mặc định (Ngày giờ)
- 21. Cách đếm ngày giữa hai ngày trong PHP?
- 22. Cách tìm ngày tháng giữa hai ngày được chỉ định?
- 23. Cách lặp lại giữa hai ngày
- 24. Cách tính số ngày làm việc giữa hai ngày?
- 25. Cách tìm số ngày giữa hai ngày/DateTimePickers
- 26. Số ngày giữa hai ngày trong Joda-Time
- 27. Cách liệt kê tất cả các ngày giữa hai ngày
- 28. In tất cả các ngày-ngày giữa hai ngày
- 29. Tham gia Ngày và Giờ tới Ngày giờ trong C#
- 30. Lấy ngày giờ hiện tại cho hạt giống số ngẫu nhiên của máy phát điện
Đây là một giải pháp tuyệt vời tuy nhiên một lưu ý có thể được theo thứ tự; bạn sẽ cần phải chuyển đổi ngày của bạn thành một thời gian để gọi 'to_f' trên đó. 'Date' không có' to_f'. tức là 'Date.today.to_time' –
+1 đơn giản, cho đến điểm, đẹp. Cảm ơn nhiều. –
Tôi cần tìm cách cung cấp cho bạn +1 khác - lần thứ 2 trong tuần này tôi đã đề cập đến câu trả lời này! –