উত্তর:
তারিখ (এবং তারিখটাইম) ক্লাসের সাহায্যে আপনি (end_date - start_date).to_iদিনের সংখ্যার পার্থক্য পেতে পারেন ।
Timeবস্তু যদিও সেকেন্ড ফিরে।
Timeঅবজেক্টগুলিকে নয়, বস্তুর উল্লেখ করছে Date। সম্ভবত আপনি নিজের মন্তব্যে নামকরণ আপডেট করতে পারেন যে তারা তারিখ নয়?
ধরে নিই end_dateএবং start_dateএটি উভয় ActiveSupport::TimeWithZoneশ্রেণিরই কারাগারে রয়েছে তবে আপনি ব্যবহার করতে পারেন:
(end_date.to_date - start_date.to_date).to_i
(Time.zone.now.to_date - 23.hours.ago.to_date).to_i, এটি 1 দেয় এবং 0 হওয়া উচিত
Time.zone.now.to_date"বুধ, 15 নভেম্বর 2017", যখন 23.hours.ago.to_date"মঙ্গল, 14 নভেম্বর 2017" প্রদান করবে। দিনের সংখ্যার পার্থক্য হ'ল এবং 1 হওয়া উচিত যদি না আপনি মধ্যরাতের আগের ঘন্টাটিতে আপনার কোডটি চালান।
রেলগুলির সাহায্যকারীদের মধ্যে কিছু বিল্ট রয়েছে যা এটি আপনার জন্য সমাধান করতে পারে। একটি বিষয় মনে রাখবেন যে এটি অ্যাকশনভিউ হেল্পারদের অংশ, তাই তারা সরাসরি কনসোল থেকে উপলব্ধ হবে না।
এটা চেষ্টা কর
<% start_time = "2012-03-02 14:46:21 +0100" %>
<% end_time = "2012-04-02 14:46:21 +0200" %>
<%= distance_of_time_in_words(start_time, end_time) %>
"about 1 month"
আমি সেকেন্ডে ফলাফল পেতে থাকি, সুতরাং এটি আমার পক্ষে কাজ করেছিল:
(Time.now - self.created_at) / 86400
1.dayনয় rubyযেমন ওপি (ট্যাগ) অনুরোধ করা হয়েছে। এটি Railsবা আরও সুনির্দিষ্ট active supportযদিও created_atমূলত এটির একটি Modelপদ্ধতি Rails..
একটি সময়ের মধ্যে দিনের সংখ্যা পেতে (সমস্ত দিনের মাত্র একটি গণনা)
(start_date..end_date).count
(start_date..end_date).to_a.size
#=> 32
2 তারিখের মধ্যে দিনের সংখ্যা পেতে
(start_date...end_date).count
(start_date...end_date).to_a.size
#=> 31
পূর্ববর্তী উত্তরগুলির মধ্যে (এই তারিখে) দুটি তারিখের মধ্যে দিনের মধ্যে সঠিক পার্থক্য দেয় না।
নিকটতম যেটি আসে তা হ'ল entডাঙ্কেন্ট । একটি সম্পূর্ণ উত্তর রূপান্তর to_iএবং তারপর বিভক্ত হবে:
(Time.now.to_i - 23.hours.ago.to_i) / 86400
>> 0
(Time.now.to_i - 25.hours.ago.to_i) / 86400
>> 1
(Time.now.to_i - 1.day.ago.to_i) / 86400
>> 1
প্রশ্নের সুনির্দিষ্ট উদাহরণে, Dateসময়টি প্রাসঙ্গিক হলে পার্স করা উচিত নয় । Time.parseপরিবর্তে ব্যবহার করুন।
def business_days_between(date1, date2)
business_days = 0
date = date2
while date > date1
business_days = business_days + 1 unless date.saturday? or date.sunday?
date = date - 1.day
end
business_days
end