Pasoonate is a powerful library that provides advanced date-time methods and supports multiple calendars! ๐
composer install
./vendor/bin/phpunit
๐ฅ Installation (via Composer)
composer require pasoonate/pasoonate-php
use Pasoonate\Pasoonate;
function pasoonate(): CalendarManager
{
return Pasoonate::make();
}
// Set timestamp ๐
$date = pasoonate()->setTimestamp(1333857600)->jalali()->format('yyyy-MM-dd');
// Convert Jalali to Gregorian ๐
$datetime = pasoonate()->jalali('1398/02/01 20:00:00')->gregorian()->getDatetime();
// Get today's date in different calendars ๐
$date = pasoonate()->jalali()->format('yyyy-MM-dd'); // 1403-10-29 ๐ท๏ธ
$date = pasoonate()->gregorian()->format('yyyy-MM-dd'); // 2025-01-18 ๐
$date = pasoonate()->islamic()->format('yyyy-MM-dd'); // 1446-07-18 ๐
$date = pasoonate()->shia()->format('yyyy-MM-dd'); // 1446-07-17 โจ
// Date conversion ๐
$date = pasoonate()->jalali()->addDay(2)->gregorian()->format('yyyy-MM-dd');
// Parse and format dates ๐
pasoonate()->jalali()->parse('yyyy-MM-dd', '1403-10-10')->addDay(3)->format('yyyy-MM-dd'); //1403-10-13
- ๐ Gregorian
- ๐ฎ๐ท Jalali
- ๐ Islamic
- โซ Shia
$today = pasoonate()->jalali()->format('Y/m/d');
$gregorianDate = pasoonate()->jalali('1403/10/10')->gregorian()->format('Y-m-d');
$jalaliDate = pasoonate()->gregorian('2025-01-18')->jalali()->format('Y/m/d');
$startOfMonth = pasoonate()->jalali()->startOfMonth()->format('Y/m/d');
$endOfMonth = pasoonate()->jalali()->endOfMonth()->format('Y/m/d');
$startOfYear = pasoonate()->jalali()->startOfYear()->format('Y/m/d');
$endOfYear = pasoonate()->jalali()->endOfYear()->format('Y/m/d');
$isLeap = pasoonate()->jalali()->isLeapYear(); // Returns true or false
$dayOfWeek = pasoonate()->jalali()->dayOfWeek(); // 0 = Saturday, 6 = Friday
$weekNumber = pasoonate()->jalali()->weekOfYear();
getTimestamp()
๐ฐ๏ธgetTimezoneOffset()
๐getDatetime()
โณgetDate()
๐getTime()
โฐgetYear()
๐ฏgetMonth()
๐getDay()
๐ท๏ธgetHour()
โณgetMinute()
โฒ๏ธgetSecond()
๐setTimestamp($timestampAsSeconds)
๐setTimezoneOffset($offsetAsMinutes)
๐๏ธsetDatetime($year, $month, $day, $hour, $minute, $second)
๐๏ธsetDate($year, $month, $day)
setTime($hour, $minute, $second)
setYear($year)
setMonth($month)
setDay($day)
setHour($hour)
setMinute($minute)
setSecond($second)
setUTCDatetime($year, $month, $day, $hour, $minute, $second)
setUTCDate($year, $month, $day)
setUTCTime($hour, $minute, $second)
setUTCYear($year)
setUTCMonth($month)
setUTCDay($day)
setUTCHour($hour)
setUTCMinute($minute)
setUTCSecond($second)
dayOfWeek()
(from 0 for Saturday to 6 for Friday)dayOfYear()
weekOfMonth()
weekOfYear()
echo $today->jalali('1399/01/15 11:22:00')->addYear(1)->format('Y/m/d H:i:s');
// ๐๏ธ 1400/01/15 11:22:00
echo $today->jalali()->addMonth(1)->format('Y/m/d H:i:s');
// ๐๏ธ 1400/02/15 11:22:00
echo $today->jalali()->addDay(3)->format('Y/m/d H:i:s');
// ๐๏ธ 1400/02/18 11:22:00
echo $today->jalali()->addHour(4)->format('Y/m/d H:i:s');
// โณ 1400/02/18 15:22:00
echo $today->jalali()->addMinute(2)->format('Y/m/d H:i:s');
// โฒ๏ธ 1400/02/18 15:24:00
echo $today->jalali()->addSecond(35)->format('Y/m/d H:i:s');
// โฐ 1400/02/18 15:24:35
echo $today->jalali()->subYear(1)->format('Y/m/d H:i:s');
// ๐
1399/02/18 15:24:35
echo $today->jalali()->subMonth(1)->format('Y/m/d H:i:s');
// ๐ 1399/01/18 15:24:35
echo $today->jalali()->subDay(3)->format('Y/m/d H:i:s');
// ๐๏ธ 1399/01/15 15:24:35
... (and many more!)
๐ Pasoonate makes date handling in PHP and Laravel super easy! ๐ฅ
๐ก Give it a โญ on GitHub if you find it useful! ๐