This Package helps developers to easily work with Jalali (Shamsi or Iranian) dates in Laravel 5 applications, based on Jalali (Shamsi) DateTime class.
PHP
Clone or download
Pull request Compare This branch is 62 commits ahead, 4 commits behind miladr:master.
Latest commit fe0f6d0 Jul 2, 2018
Permalink
Failed to load latest commit information.
src Update jDateTime.php Aug 5, 2017
tests add time() method to jDate Jun 24, 2016
.gitignore Add tests Feb 14, 2016
.travis.yml Update .travis.yml Sep 20, 2015
LICENSE update documents May 8, 2016
README.md fix document Jul 2, 2018
composer.json Update composer.json Sep 6, 2017
phpunit.xml write tests Jun 10, 2015

README.md

Build Status morilog/jalali

Installation Version 2.0

If you are using version < 2.0, please read old docs

Run the Composer update comand

$ composer require morilog/jalali

In your config/app.php add 'Morilog\Jalali\JalaliServiceProvider' to the end of the $providers array

'providers' => [

    Illuminate\Foundation\Providers\ArtisanServiceProvider::class,
    Illuminate\Auth\AuthServiceProvider::class,
    ...
    Morilog\Jalali\JalaliServiceProvider::class,

],


'alias' => [
    ...
    'jDate' => Morilog\Jalali\Facades\jDate::class
]

Basic Usage

jDate

In version >= 1.1, You can use jdate() instead of jDate::forge();

forge([$str = '', $timestamp = null])

// default timestamp is now
$date = \Morilog\Jalali\jDate::forge();
// OR
$date = jdate();

// pass timestamps
$date = jDate::forge(1333857600);
// OR
$date = jdate(1333857600);

// pass strings to make timestamps
$date = jDate::forge('last sunday');

// get the timestamp
$date = jDate::forge('last sunday')->time(); // 1333857600

// format the timestamp
$date = jDate::forge('last sunday')->format('%B %d، %Y'); // دی 02، 1391

// get a predefined format
$date = jDate::forge('last sunday')->format('datetime'); // 1391-10-02 00:00:00
$date = jDate::forge('last sunday')->format('date'); // 1391-10-02
$date = jDate::forge('last sunday')->format('time'); // 00:00:00

// amend the timestamp value, relative to existing value
$date = jDate::forge('2012-10-12')->reforge('+ 3 days')->format('date'); // 1391-07-24

// get relative 'ago' format
$date = jDate::forge('now - 10 minutes')->ago() // 10 دقیقه پیش
// OR
$date = jdate('now - 10 minutes')->ago() // 10 دقیقه پیش

jDateTime


checkDate($year, $month, $day, [$isJalali = true])

// Check jalali date
\Morilog\Jalali\jDateTime::checkDate(1391, 2, 30, true); // true

// Check jalali date
\Morilog\Jalali\jDateTime::checkDate(2016, 5, 7); // false

// Check gregorian date
\Morilog\Jalali\jDateTime::checkDate(2016, 5, 7, false); // true

toJalali($gYear, $gMonth, $gDay)

\Morilog\Jalali\jDateTime::toJalali(2016, 5, 7); // [1395, 2, 18]

toGregorian($jYear, $jMonth, $jDay)

\Morilog\Jalali\jDateTime::toGregorian(1395, 2, 18); // [2016, 5, 7]

strftime($format, [$timestamp = false, $timezone = null])

jDateTime::strftime('Y-m-d', strtotime('2016-05-8')); // 1395-02-19

createDateTimeFromFormat($format, $jalaiTimeString)

$jdate = '1394/11/25 15:00:00';

// get instance of \DateTime
$dateTime = \Morilog\Jalali\jDateTime::createDatetimeFromFormat('Y/m/d H:i:s', $jdate);

createCarbonFromFormat($format, $jalaiTimeString)

$jdate = '1394/11/25 15:00:00';

// get instance of \Carbon\Carbon
$carbon = \Morilog\Jalali\jDateTime::createCarbonFromFormat('Y/m/d H:i:s', $jdate);

convertNumbers($string)

$date = \Morilog\Jalali\jDateTime::strftime('Y-m-d', strtotime('2016-05-8'); // 1395-02-19
\Morilog\Jalali\jDateTime::convertNumbers($date); // ۱۳۹۵-۰۲-۱۹

Formatting

For help in building your formats, checkout the PHP strftime() docs.

Notes

The class relies on strtotime() to make sense of your strings, and strftime() to make the format changes. Just always check the time() output to see if you get false timestamps... which means the class couldn't understand what you were telling it.

License