Solar Hijri (Jalali, Persian) date library for Ruby
Ruby
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.

README.rdoc

Parsi Date

This is an implementation of Solar Hijri Calendar (some times referred to as Jalali or Persian Calendar) which is Iran's official calendar. Main aim of this gem is to create a Solar Hijri date library as close as possible to the built-in date library. Conversion algorithm originally adopted from here.

Usage

You can use <tt>Parsi::Date<tt> and <tt>Parsi::DateTime<tt> objects as Date and DateTime objects For example:

a = Parsi::Date.today                     # => #<Parsi::Date: 1391-08-09 (4912461/2,0/1)>
b = a >> 12                               # => #<Parsi::Date: 1392-08-09 (4913193/2,0/1)>
a.upto(b).select{ |d| d.sunday? }.count   # => 52

Parsi::Date.leap? 1391                    # => true

c = Parsi::Date.parse "1391/10/12"        # => #<Parsi::Date: 1391-10-12 (4912587/2,0)>
c.strftime "%A %d %B %Y"                  # => "سه‌شنبه 12 دی 1391"
c.strftime "%^EA %d %^EB %Y"              # => "Seshambe 12 Day 1391"

For converting a Date or DateTime object just call to_parsi (aliased to jalali and to_jalali) on it. To convert back use to_gregorian.

d = Date.civil(2012, 10, 30).to_parsi     # => #<Parsi::Date: 1391-08-09 (4912461/2,0/1)>
d.to_gregorian                            # => #<Date: 2012-10-30 ((2456231j,0s,0n),+0s,2299161j)>

Copyright © 2012 Hassan Zamani, released under the MIT license.