উত্তর:
প্রারম্ভের তারিখটি শেষ তারিখ থেকে বিয়োগ করুন:
endDate - beginDate
DateTime
অবজেক্ট থাকে তবে Date
প্রথমে রূপান্তর করতে ভুলবেন না, তা না হলে এটি সেকেন্ডের সংখ্যা ফিরে আসে (আমার ধারণা)।
Date
বিষয়বস্তু বিয়োগ Rational
করা আপনাকে একটি পূর্ণসংখ্যায় টাইপকাস্ট করার প্রয়োজন হতে পারে তা নোট করুন(endDate - beginDate).to_i
irb(main):005:0> a = Date.parse("12/1/2010")
=> #<Date: 4911063/2,0,2299161>
irb(main):007:0> b = Date.parse("12/21/2010")
=> #<Date: 4911103/2,0,2299161>
irb(main):016:0> c = b.mjd - a.mjd
=> 20
এটি একটি পরিবর্তিত জুলিয়ান ডে নম্বর ব্যবহার করে ।
উইকিপিডিয়া থেকে :
জুলিয়ান তারিখ (জেডি) হ'ল খ্রিস্টপূর্ব 1 জানুয়ারী, 4713 খ্রিস্টাব্দ থেকে গ্রীনউইচ দুপুর, জুলিয়ান প্রলেপটিক ক্যালেন্ডার থেকে দিনের এবং দিনের একটি সময়ের ব্যবধান।
এটি রুবি ২.০ এ পরিবর্তিত হতে পারে
যখন আমি এটি করি আমি একটি ভগ্নাংশ পাই। কনসোলে উদাহরণস্বরূপ (হয় আইআরবি বা রেল গ)
2.0.0-p195 :005 > require 'date'
=> true
2.0.0-p195 :006 > a_date = Date.parse("25/12/2013")
=> #<Date: 2013-12-25 ((2456652j,0s,0n),+0s,2299161j)>
2.0.0-p195 :007 > b_date = Date.parse("10/12/2013")
=> #<Date: 2013-12-10 ((2456637j,0s,0n),+0s,2299161j)>
2.0.0-p195 :008 > a_date-b_date
=> (15/1)
অবশ্যই, একটি পূর্বে কাস্টিং প্রত্যাশিত ফলাফল দেয়
2.0.0-p195 :009 > (a_date-b_date).to_i
=> 15
এটি ডেটটাইম অবজেক্টগুলির জন্যও কাজ করে তবে আপনাকে এই উদাহরণ হিসাবে কয়েক সেকেন্ড বিবেচনা করতে হবে
2.0.0-p195 :017 > a_date_time = DateTime.now
=> #<DateTime: 2013-12-31T12:23:03-08:00 ((2456658j,73383s,725757000n),-28800s,2299161j)>
2.0.0-p195 :018 > b_date_time = DateTime.now-20
=> #<DateTime: 2013-12-11T12:23:06-08:00 ((2456638j,73386s,69998000n),-28800s,2299161j)>
2.0.0-p195 :019 > a_date_time - b_date_time
=> (1727997655759/86400000000)
2.0.0-p195 :020 > (a_date_time - b_date_time).to_i
=> 19
2.0.0-p195 :021 > c_date_time = a_date_time-20
=> #<DateTime: 2013-12-11T12:23:03-08:00 ((2456638j,73383s,725757000n),-28800s,2299161j)>
2.0.0-p195 :022 > a_date_time - c_date_time
=> (20/1)
2.0.0-p195 :023 > (a_date_time - c_date_time).to_i
=> 20
রুবিতে ২.১.৩ বিষয় পরিবর্তন হয়েছে:
> endDate = Date.new(2014, 1, 2)
=> #<Date: 2014-01-02 ((2456660j,0s,0n),+0s,2299161j)>
> beginDate = Date.new(2014, 1, 1)
=> #<Date: 2014-01-01 ((2456659j,0s,0n),+0s,2299161j)>
> days = endDate - beginDate
=> (1/1)
> days.class
=> Rational
> days.to_i
=> 1
এ কেমন?
(beginDate...endDate).count
রেঞ্জটি অনন্য সিরিয়ালের একটি সেট। এবং ...
একটি একচেটিয়া রেঞ্জ আক্ষরিক।
তাই beginDate..(endDate - 1)
একই। ব্যতীত না।
কেস যখন beginDate সমান endDate , প্রথম উপাদান স্বতন্ত্রতা কারণে বাদ দেওয়া হবে এবং ...
গত এক অগ্রাহ্য করবে। সুতরাং আমরা যদি .count
আজ এবং আজকের মধ্যে তারিখগুলি করতে চাই তবে এটি 0 এ ফিরে আসবে।
0
, যা কিছু ক্ষেত্রে পুরোপুরি কাজ করে। এছাড়াও, যদি দুটি তারিখ একই থাকে তবে এটি 0 ফিরে আসবে It এটি একটি সাধারণ পূর্ণসংখ্যাও প্রদান করে। অন্যান্য উত্তরগুলি পূর্ণসংখ্যায় রূপান্তর করতে হবে বা ফলাফলটি নেতিবাচক হলে আপনাকে 0 এ অনুবাদ করতে হতে পারে।
এটা চেষ্টা কর:
num_days = later_date - earlier_date
এই সবগুলি আমাকে সঠিক ফলাফলের দিকে চালিত করেছে, কিন্তু আমি ক্ষতবিক্ষত করেছি
DateTime.now.mjd - DateTime.parse("01-01-1995").mjd
YYYY-MM-DD
ফরম্যাটে তারিখটিও গ্রহণ করে , যাইহোক যেভাবেই প্রত্যেকেরই ব্যবহার করা উচিত।
ঠিক আছে, "মধ্যবর্তী" দ্বারা আপনি কী বোঝাতে চেয়েছেন তা যত্ন নিন ...
days_apart = (to - from).to_i # from + days_apart = to
total_days = (to - from).to_i + 1 # number of "selected" days
in_between_days = (to - from).to_i - 1 # how many days are in between from and to, i.e. excluding those two days