উত্তর:
তারিখ (এবং তারিখটাইম) ক্লাসের সাহায্যে আপনি (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