class DateTime
Constants
- GDaysInMonth
- JDaysInMonth
Public Instance Methods
to_persian()
click to toggle source
# File lib/persian_date.rb, line 8 def to_persian tmp=0 gy = self.year - 1600 gm = self.month - 1 gd = self.day - 1 g_day_no = 365*gy + (gy+3)/4 - (gy+99)/100 + (gy+399)/400 gm.times { |i| g_day_no += GDaysInMonth[i] } g_day_no += 1 if gm > 1 && ((gy%4 == 0 && gy%100 != 0) || (gy%400 == 0)) g_day_no += gd j_day_no = g_day_no-79 j_np = j_day_no/12053 j_day_no %= 12053 jy = 979 + 33 * j_np + 4*(j_day_no/1461) j_day_no %= 1461 if (j_day_no >= 366) jy += (j_day_no - 1)/365 j_day_no = (j_day_no - 1) % 365 end 11.times do |i| if j_day_no >= JDaysInMonth[i] j_day_no -= JDaysInMonth[i] tmp = i + 1 else tmp = i break end end jm = tmp + 1 jd = j_day_no + 1 [jy, jm, jd] end