/parsi-date

Solar Hijri (Jalali, Persian) date library for Ruby

Primary LanguageRubyMIT LicenseMIT

Parsi Date

<img src=“https://travis-ci.org/everplays/parsi-date.png?branch=master” alt=“Build Status” />

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.